SObjectizer  5.7
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
so_5::impl::named_local_mbox_t Class Reference

A class for the named local mbox. More...

#include <named_local_mbox.hpp>

Inheritance diagram for so_5::impl::named_local_mbox_t:
so_5::abstract_message_box_t so_5::atomic_refcounted_t

Public Member Functions

 ~named_local_mbox_t () override
 
mbox_id_t id () const override
 Unique ID of this mbox. More...
 
void subscribe_event_handler (const std::type_index &type_wrapper, const so_5::message_limit::control_block_t *limit, agent_t &subscriber) override
 Add the message handler. More...
 
void unsubscribe_event_handlers (const std::type_index &type_wrapper, 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 &msg_type, const delivery_filter_t &filter, agent_t &subscriber) override
 Set a delivery filter for message type and subscriber. More...
 
void drop_delivery_filter (const std::type_index &msg_type, agent_t &subscriber) 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 Member Functions

 named_local_mbox_t (const std::string &name, const mbox_t &mbox, impl::mbox_core_t &mbox_core)
 

Private Attributes

const std::string m_name
 Mbox name. More...
 
impl::mbox_core_ref_t m_mbox_core
 An utility for this mbox. More...
 
mbox_t m_mbox
 Actual mbox. More...
 

Friends

class impl::mbox_core_t
 

Additional Inherited Members

- 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...
 

Detailed Description

A class for the named local mbox.

Note
This class is necessary because there is a difference between reference counting for anonymous and named local mboxes. Named local mboxes should have only one instance inside SObjectizer Environment.

Constructor & Destructor Documentation

◆ named_local_mbox_t()

so_5::impl::named_local_mbox_t::named_local_mbox_t ( const std::string &  name,
const mbox_t mbox,
impl::mbox_core_t mbox_core 
)
private

◆ ~named_local_mbox_t()

so_5::impl::named_local_mbox_t::~named_local_mbox_t ( )
override

Member Function Documentation

◆ do_deliver_message()

void so_5::impl::named_local_mbox_t::do_deliver_message ( const std::type_index &  msg_type,
const message_ref_t message,
unsigned int  overlimit_reaction_deep 
)
overridevirtual

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.

Implements so_5::abstract_message_box_t.

◆ drop_delivery_filter()

void so_5::impl::named_local_mbox_t::drop_delivery_filter ( const std::type_index &  msg_type,
agent_t subscriber 
)
overridevirtualnoexcept

Removes delivery filter for message type and subscriber.

Since
v.5.5.5

Implements so_5::abstract_message_box_t.

◆ environment()

environment_t & so_5::impl::named_local_mbox_t::environment ( ) const
overridevirtualnoexcept

SObjectizer Environment for which the mbox is created.

Since
v.5.6.0

Implements so_5::abstract_message_box_t.

◆ id()

mbox_id_t so_5::impl::named_local_mbox_t::id ( ) const
overridevirtual

Unique ID of this mbox.

Since
v.5.4.0

Implements so_5::abstract_message_box_t.

◆ query_name()

std::string so_5::impl::named_local_mbox_t::query_name ( ) const
overridevirtual

Get the mbox name.

Implements so_5::abstract_message_box_t.

◆ set_delivery_filter()

void so_5::impl::named_local_mbox_t::set_delivery_filter ( const std::type_index &  msg_type,
const delivery_filter_t filter,
agent_t subscriber 
)
overridevirtual

Set a delivery filter for message type and subscriber.

Since
v.5.5.5
Note
If there already is a delivery filter for that (msg_type,subscriber) pair then old delivery filter will be replaced by new one.

Implements so_5::abstract_message_box_t.

◆ subscribe_event_handler()

void so_5::impl::named_local_mbox_t::subscribe_event_handler ( const std::type_index &  type_index,
const so_5::message_limit::control_block_t limit,
agent_t subscriber 
)
overridevirtual

Add the message handler.

Implements so_5::abstract_message_box_t.

◆ type()

mbox_type_t so_5::impl::named_local_mbox_t::type ( ) const
overridevirtual

Get the type of message box.

Since
v.5.5.3
Note
This method is primarily intended for internal usage. It is useful sometimes in subscription-related operations because there is no need to do some actions for MPSC mboxes.

Implements so_5::abstract_message_box_t.

◆ unsubscribe_event_handlers()

void so_5::impl::named_local_mbox_t::unsubscribe_event_handlers ( const std::type_index &  type_index,
agent_t subscriber 
)
overridevirtual

Remove all message handlers.

Implements so_5::abstract_message_box_t.

Friends And Related Function Documentation

◆ impl::mbox_core_t

friend class impl::mbox_core_t
friend

Member Data Documentation

◆ m_mbox

mbox_t so_5::impl::named_local_mbox_t::m_mbox
private

Actual mbox.

◆ m_mbox_core

impl::mbox_core_ref_t so_5::impl::named_local_mbox_t::m_mbox_core
private

An utility for this mbox.

◆ m_name

const std::string so_5::impl::named_local_mbox_t::m_name
private

Mbox name.


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