SObjectizer  5.5
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
so_5::impl::disp_repository_t Class Reference

A utility class for work with dispatchers. More...

#include <disp_repository.hpp>

Public Member Functions

 disp_repository_t (environment_t &env, named_dispatcher_map_t named_dispatcher_map, event_exception_logger_unique_ptr_t logger)
 
dispatcher_ref_t query_named_dispatcher (const std::string &disp_name)
 Get a named dispatcher. More...
 
dispatcher_ref_t add_dispatcher_if_not_exists (const std::string &disp_name, std::function< dispatcher_unique_ptr_t() > disp_factory)
 Add named dispatcher if it is not exists. More...
 
void start ()
 Start all dispatchers. More...
 
void finish ()
 
void install_exception_logger (event_exception_logger_unique_ptr_t logger)
 Install an exception logger. More...
 
void call_exception_logger (const std::exception &event_exception, const std::string &coop_name)
 Call event exception logger for logging an exception. More...
 

Private Types

enum  state_t { state_t::not_started, state_t::started, state_t::finishing }
 State of dispatcher core. More...
 

Private Member Functions

void send_shutdown_signal ()
 Sends shutdown signal to all dispatchers. More...
 
void wait_for_full_shutdown ()
 Wait for full stop of all dispatchers. More...
 

Private Attributes

environment_tm_env
 SObjectizer Environment to work in. More...
 
named_dispatcher_map_t m_named_dispatcher_map
 Named dispatchers. More...
 
std::mutex m_exception_logger_lock
 Exception logger object lock. More...
 
event_exception_logger_unique_ptr_t m_event_exception_logger
 Exception logger. More...
 
state_t m_state
 State of dispatcher core. More...
 
default_rw_spinlock_t m_lock
 Object lock. More...
 

Detailed Description

A utility class for work with dispatchers.

Member Enumeration Documentation

◆ state_t

State of dispatcher core.

Since
v.5.4.0
Enumerator
not_started 

Dispatcher core not started.

started 

Dispatcher core started.

finishing 

Dispatcher core is shutting down.

Constructor & Destructor Documentation

◆ disp_repository_t()

so_5::impl::disp_repository_t::disp_repository_t ( environment_t env,
named_dispatcher_map_t  named_dispatcher_map,
event_exception_logger_unique_ptr_t  logger 
)

Member Function Documentation

◆ add_dispatcher_if_not_exists()

dispatcher_ref_t so_5::impl::disp_repository_t::add_dispatcher_if_not_exists ( const std::string &  disp_name,
std::function< dispatcher_unique_ptr_t() >  disp_factory 
)

Add named dispatcher if it is not exists.

Since
v.5.4.0

◆ call_exception_logger()

void so_5::impl::disp_repository_t::call_exception_logger ( const std::exception &  event_exception,
const std::string &  coop_name 
)

Call event exception logger for logging an exception.

Since
v.5.2.3.
Parameters
event_exceptionException caught.
coop_nameA cooperation to which agent is belong.

◆ finish()

void so_5::impl::disp_repository_t::finish ( )

Send a shutdown signal for all dispatchers and wait them to full stop.

◆ install_exception_logger()

void so_5::impl::disp_repository_t::install_exception_logger ( event_exception_logger_unique_ptr_t  logger)

Install an exception logger.

◆ query_named_dispatcher()

dispatcher_ref_t so_5::impl::disp_repository_t::query_named_dispatcher ( const std::string &  disp_name)

Get a named dispatcher.

Return values
null-referenceif dispatcher with disp_name has not been found.

◆ send_shutdown_signal()

void so_5::impl::disp_repository_t::send_shutdown_signal ( )
private

Sends shutdown signal to all dispatchers.

Since
v.5.2.0

◆ start()

void so_5::impl::disp_repository_t::start ( )

Start all dispatchers.

◆ wait_for_full_shutdown()

void so_5::impl::disp_repository_t::wait_for_full_shutdown ( )
private

Wait for full stop of all dispatchers.

Since
v.5.2.0

Member Data Documentation

◆ m_env

environment_t& so_5::impl::disp_repository_t::m_env
private

SObjectizer Environment to work in.

Since
v.5.5.4

◆ m_event_exception_logger

event_exception_logger_unique_ptr_t so_5::impl::disp_repository_t::m_event_exception_logger
private

Exception logger.

◆ m_exception_logger_lock

std::mutex so_5::impl::disp_repository_t::m_exception_logger_lock
private

Exception logger object lock.

◆ m_lock

default_rw_spinlock_t so_5::impl::disp_repository_t::m_lock
private

Object lock.

Since
v.5.4.0

◆ m_named_dispatcher_map

named_dispatcher_map_t so_5::impl::disp_repository_t::m_named_dispatcher_map
private

Named dispatchers.

◆ m_state

state_t so_5::impl::disp_repository_t::m_state
private

State of dispatcher core.

Since
v.5.4.0

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