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
38 const std::type_index & ,
42 "subscribe_event_handler is not supported for "
43 "msg_tracing::impl::special_enveloping_mbox_t" );
48 const std::type_index & ,
61special_enveloping_mbox_t::
type()
const
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 )
83 const std::type_index & ,
88 "set_delivery_filter is not supported for "
89 "msg_tracing::impl::special_enveloping_mbox_t" );
94 const std::type_index & ,
110 message_ref_t message )
117 handler_invoker_t & invoker )
noexcept
133 if( instance_info && instance_info->
m_envelope )
142 if(
dynamic_cast<
const impl::individual_tracing_envelope_t * >(msg) )
virtual so_5::environment_t & environment() const noexcept=0
SObjectizer Environment for which the mbox is created.
virtual mbox_id_t id() const =0
Unique ID of this mbox.
virtual std::string query_name() const =0
Get the mbox name.
virtual 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)=0
Deliver message for all subscribers with respect to message limits.
virtual mbox_type_t type() const =0
Get the type of message box.
Interface for message sink.
An interface of delivery filter object.
virtual void invoke(const payload_info_t &payload) noexcept=0
Call an actual handler for the enveloped message/signal.
payload_info_t(message_ref_t message)
Initializing constructor.
intrusive_ptr_t(intrusive_ptr_t &&o) noexcept
Move constructor.
T * operator->() const noexcept
A base class for agent messages.
const message_ref_t m_message
The original message/signal.
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
const mbox_t m_dest
The real destination for the messages/signals.
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
An interface of object for accessing trace details.
virtual optional< message_instance_info_t > message_instance_info() const noexcept=0
Get message instance information.
#define SO_5_THROW_EXCEPTION(error_code, desc)
Implementation details of message delivery tracing mechanism.
Public part of message delivery tracing mechanism.
filter_shptr_t make_filter(L &&lambda)
A helper function for creation of new filter from lambda-function.
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.
const int rc_not_implemented
Feature or method has no implementation yet.
const void * m_envelope
A pointer to envelope.