SObjectizer
5.5
|
A multi-producer/single-consumer mbox definition. More...
#include <mpsc_mbox.hpp>
Public Member Functions | |
template<typename... Tracing_Args> | |
limitless_mpsc_mbox_template (mbox_id_t id, agent_t *single_consumer, Tracing_Args &&... tracing_args) | |
mbox_id_t | id () const override |
Unique ID of this mbox. More... | |
void | subscribe_event_handler (const std::type_index &, const message_limit::control_block_t *, agent_t &subscriber) override |
Add the message handler. More... | |
void | unsubscribe_event_handlers (const std::type_index &, agent_t &subscriber) override |
Remove all message handlers. More... | |
std::string | query_name () const override |
Get the mbox name. More... | |
mbox_type_t | type () const override |
Get the type of message box. More... | |
void | do_deliver_message (const std::type_index &msg_type, const message_ref_t &message, unsigned int overlimit_reaction_deep) override |
Deliver message for all subscribers with respect to message limits. More... | |
void | set_delivery_filter (const std::type_index &, const delivery_filter_t &, agent_t &) override |
void | drop_delivery_filter (const std::type_index &, agent_t &) noexcept override |
Removes delivery filter for message type and subscriber. More... | |
environment_t & | environment () const noexcept override |
SObjectizer Environment for which the mbox is created. More... | |
Protected Member Functions | |
template<typename L > | |
void | do_delivery (typename Tracing_Base::deliver_op_tracer const &tracer, L l) |
Helper method to do delivery actions under locked object. More... | |
![]() | |
atomic_refcounted_t (const atomic_refcounted_t &)=delete | |
atomic_refcounted_t & | operator= (const atomic_refcounted_t &)=delete |
atomic_refcounted_t () noexcept | |
Default constructor. More... | |
~atomic_refcounted_t () noexcept=default | |
Destructor. More... | |
void | inc_ref_count () noexcept |
Increments reference count. More... | |
unsigned long | dec_ref_count () noexcept |
Decrement reference count. More... | |
Protected Attributes | |
const mbox_id_t | m_id |
ID of this mbox. More... | |
agent_t * | m_single_consumer |
The only consumer of this mbox's messages. More... | |
default_rw_spinlock_t | m_lock |
Protection of object from modification. More... | |
std::size_t | m_subscriptions_count = 0 |
Number of active subscriptions. More... | |
Additional Inherited Members |
A multi-producer/single-consumer mbox definition.
|
inline |
|
inlineoverridevirtual |
Deliver message for all subscribers with respect to message limits.
Implements so_5::abstract_message_box_t.
Reimplemented in so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >.
|
inlineprotected |
Helper method to do delivery actions under locked object.
L | lambda with actual delivery actions. |
tracer | Tracer object to log the case of abscense of subscriptions. |
l | Lambda with actual delivery actions. |
|
inlineoverridevirtualnoexcept |
Removes delivery filter for message type and subscriber.
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtualnoexcept |
SObjectizer Environment for which the mbox is created.
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Get the mbox name.
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtual |
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtual |
Add the message handler.
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtual |
Get the type of message box.
Implements so_5::abstract_message_box_t.
|
inlineoverridevirtual |
Remove all message handlers.
Implements so_5::abstract_message_box_t.
|
protected |
ID of this mbox.
|
protected |
Protection of object from modification.
|
protected |
The only consumer of this mbox's messages.
|
protected |
Number of active subscriptions.