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 240 a.m_envelope.swap( b.m_envelope );
253 m_envelope->revoke();
279 return m_envelope ? m_envelope->has_been_revoked() :
true;
290 template<
typename... Args >
294 return delivery_id_t{ std::forward<Args>(args)... };
304 const so_5::mbox_t & to,
305 const std::type_index & msg_type,
306 message_ref_t payload )
310 so_5::intrusive_ptr_t< envelope_t > envelope{
311 std::make_unique< envelope_t >( std::move(payload) ) };
313 to->do_deliver_message( msg_type, envelope, 1u );
315 return delivery_id_maker_t::make( std::move(envelope) );
322 template<
class Message,
bool Is_Signal >
325 template<
typename... Args >
328 const so_5::mbox_t & to,
345 template<
class Message >
353 const so_5::mbox_t & to )
362 template<
class Message >
417 template<
typename Message,
typename Target,
typename... Args >
458 template<
typename Message,
typename Target >
460 typename std::enable_if<
507 template<
typename Message,
typename Target >
509 typename std::enable_if<
510 ::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)