SObjectizer  5.8
Loading...
Searching...
No Matches
so_5::impl::named_local_mbox_t Class Referencefinal

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.
 
void subscribe_event_handler (const std::type_index &type_wrapper, abstract_message_sink_t &subscriber) override
 Add the message handler.
 
void unsubscribe_event_handler (const std::type_index &type_wrapper, abstract_message_sink_t &subscriber) noexcept override
 Remove all message handlers.
 
std::string query_name () const override
 Get the mbox name.
 
mbox_type_t type () const override
 Get the type of message box.
 
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
 Deliver message for all subscribers with respect to message limits.
 
void set_delivery_filter (const std::type_index &msg_type, const delivery_filter_t &filter, abstract_message_sink_t &subscriber) override
 Set a delivery filter for message type and subscriber.
 
void drop_delivery_filter (const std::type_index &msg_type, abstract_message_sink_t &subscriber) noexcept override
 Removes delivery filter for message type and subscriber.
 
environment_tenvironment () const noexcept override
 SObjectizer Environment for which the mbox is created.
 
- Public Member Functions inherited from so_5::abstract_message_box_t
 abstract_message_box_t ()=default
 
virtual ~abstract_message_box_t () noexcept=default
 

Private Member Functions

 named_local_mbox_t (full_named_mbox_id_t full_name, const mbox_t &mbox, impl::mbox_core_t &mbox_core)
 

Private Attributes

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

Friends

class impl::mbox_core_t
 

Additional Inherited Members

- 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.
 
 ~atomic_refcounted_t () noexcept=default
 Destructor.
 
void inc_ref_count () noexcept
 Increments reference count.
 
unsigned long dec_ref_count () noexcept
 Decrement reference count.
 

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.

Definition at line 36 of file named_local_mbox.hpp.

Constructor & Destructor Documentation

◆ named_local_mbox_t()

so_5::impl::named_local_mbox_t::named_local_mbox_t ( full_named_mbox_id_t full_name,
const mbox_t & mbox,
impl::mbox_core_t & mbox_core )
private

Definition at line 19 of file named_local_mbox.cpp.

◆ ~named_local_mbox_t()

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

Definition at line 30 of file named_local_mbox.cpp.

Member Function Documentation

◆ do_deliver_message()

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

Deliver message for all subscribers with respect to message limits.

Since
v.5.5.4

A message delivery from timer thread is somewhat different from an ordinary message delivery. Especially in the case when target mbox is a message chain. If that message chain is full and some kind of overflow reaction is specified (like waiting for some time or throwing an exception) then it can lead to undesired behaviour of the whole application. To take care about these cases a new method is introduced.

Note
Since v.5.6.0 this method is used for deliverance of ordinary messages/signals and for deliverance of enveloped messages.
Parameters
delivery_modeCan the delivery blocks the current thread?
msg_typeType of the message to deliver.
messageA message instance to be delivered.
redirection_deepCurrent deep of overlimit reaction recursion.

Implements so_5::abstract_message_box_t.

Definition at line 73 of file named_local_mbox.cpp.

◆ drop_delivery_filter()

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

Removes delivery filter for message type and subscriber.

Since
v.5.5.5

Implements so_5::abstract_message_box_t.

Definition at line 96 of file named_local_mbox.cpp.

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

Definition at line 104 of file named_local_mbox.cpp.

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

Definition at line 36 of file named_local_mbox.cpp.

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

Definition at line 58 of file named_local_mbox.cpp.

◆ 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,
abstract_message_sink_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.
Parameters
msg_typeMessage type to be filtered.
filterFilter to be set. A caller must guaranted the validity of this reference.
subscriberA subscriber for the message.

Implements so_5::abstract_message_box_t.

Definition at line 87 of file named_local_mbox.cpp.

◆ subscribe_event_handler()

void so_5::impl::named_local_mbox_t::subscribe_event_handler ( const std::type_index & type_index,
abstract_message_sink_t & subscriber )
overridevirtual

Add the message handler.

Parameters
type_indexMessage type.
subscriberSubscriber.

Implements so_5::abstract_message_box_t.

Definition at line 42 of file named_local_mbox.cpp.

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

Definition at line 67 of file named_local_mbox.cpp.

◆ unsubscribe_event_handler()

void so_5::impl::named_local_mbox_t::unsubscribe_event_handler ( const std::type_index & type_index,
abstract_message_sink_t & subscriber )
overridevirtualnoexcept

Remove all message handlers.

Parameters
type_indexMessage type.
subscriberSubscriber.

Implements so_5::abstract_message_box_t.

Definition at line 50 of file named_local_mbox.cpp.

Friends And Related Symbol Documentation

◆ impl::mbox_core_t

friend class impl::mbox_core_t
friend

Definition at line 39 of file named_local_mbox.hpp.

Member Data Documentation

◆ m_mbox

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

Actual mbox.

Definition at line 97 of file named_local_mbox.hpp.

◆ m_mbox_core

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

An utility for this mbox.

Definition at line 94 of file named_local_mbox.hpp.

◆ m_name

const full_named_mbox_id_t so_5::impl::named_local_mbox_t::m_name
private

Mbox name.

Definition at line 91 of file named_local_mbox.hpp.


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