2
3
6
7
8
9
10
12#include <so_5/msg_tracing_individual.hpp>
14#include <so_5/exception.hpp>
31special_enveloping_mbox_t::
id()
const
42 "subscribe_event_handler is not supported for "
43 "msg_tracing::impl::special_enveloping_mbox_t" );
57 return m_dest->query_name();
61special_enveloping_mbox_t::
type()
const
63 return m_dest->type();
69 const std::type_index & msg_type,
70 const message_ref_t & message,
71 unsigned int redirection_deep )
74 message_ref_t wrapped_msg{
75 std::make_unique< individual_tracing_envelope_t >( message )
78 m_dest->do_deliver_message( delivery_mode, msg_type, wrapped_msg, redirection_deep );
88 "set_delivery_filter is not supported for "
89 "msg_tracing::impl::special_enveloping_mbox_t" );
103 return m_dest->environment();
110 message_ref_t message )
117 handler_invoker_t & invoker )
noexcept
119 invoker.invoke( payload_info_t{ m_message } );
131 return make_filter( [](
const trace_data_t & td ) ->
bool {
132 const auto instance_info = td.message_instance_info();
133 if( instance_info && instance_info->m_envelope )
137 const message_t * msg =
139 static_cast<
const message_t *>(instance_info->m_envelope);
142 if(
dynamic_cast<
const impl::individual_tracing_envelope_t * >(msg) )
Interface for message sink.
An interface of delivery filter object.
individual_tracing_envelope_t(message_ref_t message)
Initializing constructor.
void access_hook(access_context_t context, handler_invoker_t &invoker) noexcept override
void subscribe_event_handler(const std::type_index &type_index, abstract_message_sink_t &subscriber) override
void drop_delivery_filter(const std::type_index &msg_type, abstract_message_sink_t &subscriber) noexcept override
mbox_type_t type() const override
so_5::environment_t & environment() const noexcept override
SObjectizer Environment for which the mbox is created.
special_enveloping_mbox_t(mbox_t dest)
Initializing constructor.
std::string query_name() const override
void unsubscribe_event_handler(const std::type_index &type_index, abstract_message_sink_t &subscriber) noexcept override
void do_deliver_message(message_delivery_mode_t delivery_mode, const std::type_index &msg_type, const message_ref_t &message, unsigned int redirection_deep) override
Implementation of message delivery.
mbox_id_t id() const override
void set_delivery_filter(const std::type_index &msg_type, const delivery_filter_t &filter, abstract_message_sink_t &subscriber) override
#define SO_5_THROW_EXCEPTION(error_code, desc)
Implementation details of message delivery tracing mechanism.
Public part of message delivery tracing mechanism.
SO_5_FUNC filter_shptr_t make_individual_trace_filter()
Factory for special message tracing filter for individual tracing.
Private part of message limit implementation.
message_delivery_mode_t
Possible modes of message/signal delivery.
mbox_type_t
Type of the message box.