SObjectizer  5.5
Public Member Functions | Private Types | Private Attributes | List of all members
so_5::impl::limitful_mpsc_mbox_template< Tracing_Base > Class Template Reference

A multi-producer/single-consumer mbox with message limit control. More...

#include <mpsc_mbox.hpp>

Inheritance diagram for so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >:
so_5::impl::limitless_mpsc_mbox_template< Tracing_Base > so_5::abstract_message_box_t so_5::atomic_refcounted_t

Public Member Functions

template<typename... Tracing_Args>
 limitful_mpsc_mbox_template (mbox_id_t id, agent_t *single_consumer, const so_5::message_limit::impl::info_storage_t &limits_storage, Tracing_Args &&... tracing_args)
 
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...
 
- Public Member Functions inherited from so_5::impl::limitless_mpsc_mbox_template< Tracing_Base >
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 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_tenvironment () const noexcept override
 SObjectizer Environment for which the mbox is created. More...
 
- Public Member Functions inherited from so_5::abstract_message_box_t
 abstract_message_box_t ()=default
 
virtual ~abstract_message_box_t () noexcept=default
 
bool operator== (const abstract_message_box_t &o) const noexcept
 
bool operator< (const abstract_message_box_t &o) const noexcept
 

Private Types

using base_type = limitless_mpsc_mbox_template< Tracing_Base >
 

Private Attributes

const so_5::message_limit::impl::info_storage_tm_limits
 

Additional Inherited Members

- Protected Member Functions inherited from so_5::impl::limitless_mpsc_mbox_template< Tracing_Base >
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...
 
- Protected Member Functions inherited from so_5::abstract_message_box_t
virtual void do_deliver_message_from_timer (const std::type_index &msg_type, const message_ref_t &message)
 Special method for message delivery from a timer thread. More...
 
- Protected Member Functions inherited from so_5::atomic_refcounted_t
 atomic_refcounted_t (const atomic_refcounted_t &)=delete
 
atomic_refcounted_toperator= (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...
 
- Static Protected Member Functions inherited from so_5::abstract_message_box_t
static void delegate_deliver_message_from_timer (abstract_message_box_t &mbox, const std::type_index &msg_type, const message_ref_t &message)
 Helper for calling do_deliver_message_from_timer in derived classes. More...
 
- Protected Attributes inherited from so_5::impl::limitless_mpsc_mbox_template< Tracing_Base >
const mbox_id_t m_id
 ID of this mbox. More...
 
agent_tm_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...
 

Detailed Description

template<typename Tracing_Base>
class so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >

A multi-producer/single-consumer mbox with message limit control.

Since
v.5.5.4
Note
Renamed from limitful_mpsc_mbox_t to limitful_mpsc_mbox_template in v.5.5.9.
Attention
Stores a reference to message limits storage. Because of that this reference must remains correct till the end of the mbox's lifetime.

Member Typedef Documentation

◆ base_type

template<typename Tracing_Base >
using so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >::base_type = limitless_mpsc_mbox_template< Tracing_Base >
private

Constructor & Destructor Documentation

◆ limitful_mpsc_mbox_template()

template<typename Tracing_Base >
template<typename... Tracing_Args>
so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >::limitful_mpsc_mbox_template ( mbox_id_t  id,
agent_t single_consumer,
const so_5::message_limit::impl::info_storage_t limits_storage,
Tracing_Args &&...  tracing_args 
)
inline
Parameters
idID of that mbox.
single_consumerThe owner of that mbox.
limits_storageThis reference must remains correct till the end of the mbox's lifetime.
tracing_argsOptional arguments for Tracing_Base.

Member Function Documentation

◆ do_deliver_message()

template<typename Tracing_Base >
void so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >::do_deliver_message ( const std::type_index &  msg_type,
const message_ref_t message,
unsigned int  overlimit_reaction_deep 
)
inlineoverridevirtual

Deliver message for all subscribers with respect to message limits.

Since
v.5.5.4
Note
Since v.5.6.0 this method is used for deliverance of ordinary messages/signals and for deliverance of enveloped messages.

Reimplemented from so_5::impl::limitless_mpsc_mbox_template< Tracing_Base >.

Member Data Documentation

◆ m_limits

template<typename Tracing_Base >
const so_5::message_limit::impl::info_storage_t& so_5::impl::limitful_mpsc_mbox_template< Tracing_Base >::m_limits
private

The documentation for this class was generated from the following file: