SObjectizer  5.5
Public Member Functions | Protected Member Functions | Private Member Functions | Friends | List of all members
so_5::abstract_message_chain_t Class Referenceabstract

An interace of message chain. More...

#include <mchain.hpp>

Inheritance diagram for so_5::abstract_message_chain_t:
so_5::abstract_message_box_t so_5::atomic_refcounted_t so_5::mchain_props::mchain_template< Queue, Tracing_Base >

Public Member Functions

virtual mchain_props::extraction_status_t extract (mchain_props::demand_t &dest, mchain_props::duration_t empty_queue_timeout)=0
 
so_5::mbox_t as_mbox ()
 Cast message chain to message box. More...
 
virtual bool empty () const =0
 Is message chain empty? More...
 
virtual std::size_t size () const =0
 Count of messages in the chain. More...
 
virtual void close (mchain_props::close_mode_t mode)=0
 Close the chain. More...
 
virtual so_5::environment_tenvironment () const =0
 SObjectizer Environment for which the chain is created. More...
 
virtual mbox_id_t id () const=0
 Unique ID of this mbox. More...
 

Protected Member Functions

 abstract_message_chain_t ()=default
 
virtual ~abstract_message_chain_t () SO_5_NOEXCEPT=default
 
virtual mchain_props::extraction_status_t extract (mchain_props::demand_t &dest, mchain_props::select_case_t &select_case)
 An extraction attempt as a part of multi chain select. More...
 
virtual void remove_from_select (mchain_props::select_case_t &select_case)
 Removement of mchain from multi chain select. 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...
 
 abstract_message_box_t ()=default
 
virtual ~abstract_message_box_t () SO_5_NOEXCEPT=default
 
virtual mbox_id_t id () const =0
 Unique ID of this mbox. More...
 
template<class Message >
void deliver_message (std::type_index subscription_type, const intrusive_ptr_t< Message > &msg_ref) const
 Deliver message. More...
 
template<class Message >
void deliver_message (const intrusive_ptr_t< Message > &msg_ref) const
 Deliver message. More...
 
template<class Message >
void deliver_message (std::type_index subscription_type, std::unique_ptr< Message > msg_unique_ptr, message_mutability_t mutability) const
 Deliver message. More...
 
template<class Message >
void deliver_message (std::unique_ptr< Message > msg_unique_ptr) const
 Deliver message. More...
 
template<class Message >
void deliver_message (Message *msg_raw_ptr) const
 Deliver message. More...
 
template<class Message >
void deliver_signal () const
 Deliver signal. More...
 
template<class Result >
service_invoke_proxy_t< Result > get_one ()
 Create a special proxy for service request invocation. More...
 
service_invoke_proxy_t< void > run_one ()
 Create a special proxy for service request invocation where return type is void. More...
 
void deliver_message (const std::type_index &msg_type, const message_ref_t &message) const
 Deliver message for all subscribers. More...
 
void deliver_service_request (const std::type_index &msg_type, const message_ref_t &message) const
 Deliver service request. More...
 
virtual void subscribe_event_handler (const std::type_index &type_index, const message_limit::control_block_t *limit, agent_t *subscriber)=0
 Add the message handler. More...
 
virtual void unsubscribe_event_handlers (const std::type_index &type_index, agent_t *subscriber)=0
 Remove all message handlers. More...
 
virtual std::string query_name () const =0
 Get the mbox name. More...
 
virtual mbox_type_t type () const =0
 Get the type of message box. More...
 
virtual void do_deliver_message (const std::type_index &msg_type, const message_ref_t &message, unsigned int overlimit_reaction_deep) const =0
 Deliver message for all subscribers with respect to message limits. More...
 
virtual void do_deliver_service_request (const std::type_index &msg_type, const message_ref_t &message, unsigned int overlimit_reaction_deep) const =0
 Deliver service request. More...
 
virtual void do_deliver_enveloped_msg (const std::type_index &msg_type, const message_ref_t &message, unsigned int overlimit_reaction_deep)
 Deliver enveloped message. More...
 
bool operator== (const abstract_message_box_t &o) const SO_5_NOEXCEPT
 
bool operator< (const abstract_message_box_t &o) const SO_5_NOEXCEPT
 
virtual void set_delivery_filter (const std::type_index &msg_type, const delivery_filter_t &filter, agent_t &subscriber)=0
 Set a delivery filter for message type and subscriber. More...
 
virtual void drop_delivery_filter (const std::type_index &msg_type, agent_t &subscriber) SO_5_NOEXCEPT=0
 Removes delivery filter for message type and subscriber. 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 () SO_5_NOEXCEPT
 Default constructor. More...
 
 ~atomic_refcounted_t () SO_5_NOEXCEPT=default
 Destructor. More...
 
void inc_ref_count () SO_5_NOEXCEPT
 Increments reference count. More...
 
unsigned long dec_ref_count () SO_5_NOEXCEPT
 Decrement reference count. More...
 

Private Member Functions

 abstract_message_chain_t (const abstract_message_chain_t &)=delete
 
abstract_message_chain_toperator= (const abstract_message_chain_t &)=delete
 

Friends

class intrusive_ptr_t< abstract_message_chain_t >
 
class mchain_props::select_case_t
 

Additional Inherited Members

- 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

An interace of message chain.

Since
v.5.5.13

Constructor & Destructor Documentation

◆ abstract_message_chain_t() [1/2]

so_5::abstract_message_chain_t::abstract_message_chain_t ( const abstract_message_chain_t )
privatedelete

◆ abstract_message_chain_t() [2/2]

so_5::abstract_message_chain_t::abstract_message_chain_t ( )
protecteddefault

◆ ~abstract_message_chain_t()

virtual so_5::abstract_message_chain_t::~abstract_message_chain_t ( )
protectedvirtualdefault

Member Function Documentation

◆ as_mbox()

mbox_t so_5::abstract_message_chain_t::as_mbox ( )

Cast message chain to message box.

◆ close()

virtual void so_5::abstract_message_chain_t::close ( mchain_props::close_mode_t  mode)
pure virtual

Close the chain.

Parameters
modeWhat to do with chain's content.

Implemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

◆ empty()

virtual bool so_5::abstract_message_chain_t::empty ( ) const
pure virtual

◆ environment()

virtual so_5::environment_t& so_5::abstract_message_chain_t::environment ( ) const
pure virtual

SObjectizer Environment for which the chain is created.

Implemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

◆ extract() [1/2]

virtual mchain_props::extraction_status_t so_5::abstract_message_chain_t::extract ( mchain_props::demand_t dest,
mchain_props::duration_t  empty_queue_timeout 
)
pure virtual
Parameters
destDestination for extracted messages.
empty_queue_timeoutMax time to wait on empty queue.

Implemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

◆ extract() [2/2]

mchain_props::extraction_status_t so_5::abstract_message_chain_t::extract ( mchain_props::demand_t dest,
mchain_props::select_case_t select_case 
)
protectedvirtual

An extraction attempt as a part of multi chain select.

Note
In v.5.5.16 this method has an implementation. It is done to keep compatibility with previous version. This implementation throws an exception.
This method is intended to be used by select_case_t.
Since
v.5.5.16
Parameters
destDestination for extracted messages.
select_caseSelect case to be stored for notification if mchain is empty.

Reimplemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

◆ id()

virtual mbox_id_t so_5::abstract_message_box_t::id

Unique ID of this mbox.

Since
v.5.4.0

◆ operator=()

abstract_message_chain_t& so_5::abstract_message_chain_t::operator= ( const abstract_message_chain_t )
privatedelete

◆ remove_from_select()

void so_5::abstract_message_chain_t::remove_from_select ( mchain_props::select_case_t select_case)
protectedvirtual

Removement of mchain from multi chain select.

Note
In v.5.5.16 this method has an implementation. It is done to keep compatibility with previous version. This implementation throws an exception.
This method is intended to be used by select_case_t.
Attention
This method will be declared as pure virtual and noexcept in v.5.6.0.
Since
v.5.5.16
Parameters
select_caseSelect case to be removed from notification queue.

Reimplemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

◆ size()

virtual std::size_t so_5::abstract_message_chain_t::size ( ) const
pure virtual

Count of messages in the chain.

Implemented in so_5::mchain_props::mchain_template< Queue, Tracing_Base >.

Friends And Related Function Documentation

◆ intrusive_ptr_t< abstract_message_chain_t >

friend class intrusive_ptr_t< abstract_message_chain_t >
friend

◆ mchain_props::select_case_t

friend class mchain_props::select_case_t
friend

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