11 #include <so_5/version.hpp> 13 #include <so_5_extra/error_ranges.hpp> 15 #include <so_5/enveloped_msg.hpp> 16 #include <so_5/send_functions.hpp> 75 class envelope_t
final :
public so_5::enveloped_msg::envelope_t
85 handler_invoker_t & invoker )
const noexcept 91 invoker.invoke( payload_info_t{ m_payload } );
101 return message_mutability( m_payload );
109 SO_5_THROW_EXCEPTION(
110 so_5::extra::revocable_msg::errors
111 ::rc_mutabilty_of_envelope_cannot_be_changed,
112 "revocable_msg's envelope prohibit changing of " 113 "message mutability" );
124 m_revoked.store(
true, std::memory_order_release );
130 return m_revoked.load( std::memory_order_acquire );
136 handler_invoker_t & invoker )
noexcept override 142 invoker.invoke( payload_info_t{ m_payload } );
202 class delivery_id_t
final 214 so_5::intrusive_ptr_t< details::envelope_t > envelope )
231 delivery_id_t &
operator=(
const delivery_id_t & ) =
delete;
235 delivery_id_t &
operator=( delivery_id_t && )
noexcept =
default;
238 swap( delivery_id_t & a, delivery_id_t & b )
noexcept 241 swap( a.m_envelope, b.m_envelope );
254 m_envelope->revoke();
280 return m_envelope ? m_envelope->has_been_revoked() :
true;
291 template<
typename... Args >
295 return delivery_id_t{ std::forward<Args>(args)... };
305 const so_5::mbox_t & to,
306 const std::type_index & msg_type,
307 message_ref_t payload )
311 so_5::intrusive_ptr_t< envelope_t > envelope{
312 std::make_unique< envelope_t >( std::move(payload) ) };
314 to->do_deliver_message(
315 message_delivery_mode_t::ordinary,
320 return delivery_id_maker_t::make( std::move(envelope) );
327 template<
class Message,
bool Is_Signal >
330 template<
typename... Args >
333 const so_5::mbox_t & to,
350 template<
class Message >
358 const so_5::mbox_t & to )
367 template<
class Message >
422 template<
typename Message,
typename Target,
typename... Args >
463 template<
typename Message,
typename Target >
465 typename std::enable_if<
512 template<
typename Message,
typename Target >
514 typename std::enable_if<
515 ::so_5::is_signal< Message >::value,
Ranges for error codes of each submodules.
static so_5::extra::revocable_msg::delivery_id_t send(const so_5::mbox_t &to, Args &&... args)
static so_5::extra::revocable_msg::delivery_id_t send(const so_5::mbox_t &to)