SObjectizer  5.1
Открытые члены | Защищенные члены | Закрытые члены | Друзья | Полный список членов класса
Класс so_5::rt::mbox_tabstract

Базовый класс почтового ящика. Подробнее...

Граф наследования:so_5::rt::mbox_t:
so_5::rt::atomic_refcounted_t so_5::rt::impl::local_mbox_t so_5::rt::impl::named_local_mbox_t

Открытые члены

template<class MESSAGE >
void deliver_message (std::unique_ptr< MESSAGE > &msg_unique_ptr)
 Отправить сообщение на данный mbox. Подробнее...
 
template<class MESSAGE >
void deliver_message (std::unique_ptr< MESSAGE > &&msg_unique_ptr)
 Отправить сообщение на данный mbox. Подробнее...
 
template<class MESSAGE >
void deliver_message ()
 Отправить сообщение на данный mbox. Подробнее...
 
virtual const std::string & query_name () const =0
 Получить имя.
 

Защищенные члены

virtual void subscribe_first_event_handler (const type_wrapper_t &type_wrapper, std::unique_ptr< impl::message_consumer_link_t > &message_consumer_link, const event_handler_caller_ref_t &event_handler_caller_ref)=0
 Добавить потребителя сообщения, который является обработчиком события. Подробнее...
 
virtual ret_code_t subscribe_more_event_handler (const type_wrapper_t &type_wrapper, impl::message_consumer_link_t *message_consumer_link, const event_handler_caller_ref_t &event_handler_caller_ref, throwing_strategy_t throwing_strategy)=0
 Добавить потребителя сообщения, который является обработчиком события. Подробнее...
 
virtual ret_code_t unsubscribe_event_handler (const type_wrapper_t &type_wrapper, impl::message_consumer_link_t *message_consumer_link, const event_handler_caller_ref_t &event_handler_caller_ref, bool &is_last_subscription, throwing_strategy_t throwing_strategy)=0
 Удалить потребителя сообщения, который является обработчиком события. Подробнее...
 
virtual void unsubscribe_event_handler (const type_wrapper_t &type_wrapper, impl::message_consumer_link_t *message_consumer_link)=0
 Удалить всех потребителей сообщения. Подробнее...
 
virtual void deliver_message (const type_wrapper_t &type_wrapper, const message_ref_t &message_ref)=0
 Отправить всем подписчикам сообщение.
 
virtual const mbox_tcmp_ordinal () const
 Адрес для проведения операция сравнения. Подробнее...
 

Закрытые члены

 mbox_t (const mbox_t &)
 
void operator= (const mbox_t &)
 
- Закрытые члены inherited from so_5::rt::atomic_refcounted_t
 atomic_refcounted_t ()
 Конструктор по умолчанию. Устанавливает количество ссылок в 0.
 
void inc_ref_count ()
 Увеличить количество ссылок.
 
unsigned long dec_ref_count ()
 Уменьшить количество ссылок. Подробнее...
 

Друзья

class agent_t
 
class mbox_ref_t
 
class impl::named_local_mbox_t
 
class so_5::timer_thread::timer_act_t
 

Подробное описание

Базовый класс почтового ящика.

Служит интерфейсом для отправки и получения сообщений агентами.

Mbox-ы создаются через SObjectizer Environment и оборачиваются в so_5::rt::mbox_ref_t. Главный метод mbox-а – это метод доставки сообщения mbox_t::deliver_message(), который имеет две версии: одна предназначена для отправкой реального экземпляра сообщения, а вторая для отправки сообщения без реального объекта, когда известен только тип сообщения. Суть метода сводится к определению списка всех агентов подписчиков на данный тип сообщения и к последующему добавлению заявки на обработку сообщения в локальную очередь событий каждому агенту (agent_t) из этого списка.

Отправка отложенных и периодических событий происходит тоже через mbox_t. SObjectizer Environment запоминает mbox, через который осуществляется отправка сообщения, а таймерная нить в назначенное время инициирует отправку сообщения через заданный mbox.

См. также
so_environment_t::schedule_timer(), so_environment_t::single_timer().

Методы

const mbox_t * so_5::rt::mbox_t::cmp_ordinal ( ) const
protectedvirtual

Адрес для проведения операция сравнения.

Реализация по умолчанию возвращает this.

Переопределяется в so_5::rt::impl::named_local_mbox_t.

Используется в so_5::rt::impl::named_local_mbox_t::cmp_ordinal().

template<class MESSAGE >
void so_5::rt::mbox_t::deliver_message ( std::unique_ptr< MESSAGE > &  msg_unique_ptr)
inline

Отправить сообщение на данный mbox.

Экземпляр сообщения определяется берется из msg_unique_ptr, далее за удаление сообщения отвечает SO.

Аргументы
msg_unique_ptrУмный указатель на экземпляр сообщения.
Примеры:
so_5/hello_all и so_5/layer.

Перекрестные ссылки deliver_message().

Используется в so_sysconf_4::impl::main_sysconf_logger_t::build_log_message(), mbapi_4::message_integrator_impl_t< SERIALIZABLE >::cast_and_send(), so_sysconf_4::impl::coop_factory_register_t::coop_factory_register_t(), so_sysconf_4::impl::coop_handler_register_t::coop_handler_register_t(), so_5::rt::impl::named_local_mbox_t::deliver_message(), so_sysconf_4::impl::coop_handler_register_t::dereg(), so_sysconf_4::impl::coop_factory_register_t::dereg(), so_sysconf_4::impl::coop_handler_register_t::dereg_finalize(), so_sysconf_4::impl::coop_factory_register_t::dereg_finalize(), so_sysconf_4::impl::task_processor_t::do_find_meta_action_structure(), so_5::timer_thread::timer_act_t::exec(), so_5_transport::socket::impl::svc_handler_t::handle_close(), so_sysconf_4::impl::so_sysconf_layer_impl_t::init_fatal_error(), so_sysconf_4::impl::layer_handler_register_t::layer_handler_register_t(), so_5_transport::socket::impl::svc_handler_t::open(), mbapi_4::message_integrator_impl_t< SERIALIZABLE >::read_and_send(), so_sysconf_4::impl::task_processor_t::real_load(), so_sysconf_4::impl::task_processor_t::real_unload(), so_sysconf_4::impl::layer_handler_register_t::reg(), so_sysconf_4::impl::coop_handler_register_t::reg(), so_sysconf_4::impl::coop_factory_register_t::reg(), gemont_2::scalar_data_source_t< T >::send_current_value(), so_sysconf_4::named_event_t::set_owner_dll_name(), so_5_transport::a_server_transport_agent_t::so_evt_start(), gemont_2::scalar_data_source_t< T >::start(), gemont_2::scalar_data_source_t< T >::stop(), so_sysconf_4::impl::so_sysconf_layer_impl_t::stop(), mbapi_4::impl::mbapi_layer_impl_t::transmit_banary_message(), mbapi_4::impl::mbapi_layer_impl_t::transmit_message(), so_sysconf_4::named_event_t::trigger_event() и mbapi_4::impl::stagepoint_bind_impl_t::try_to_accept_message().

template<class MESSAGE >
void so_5::rt::mbox_t::deliver_message ( std::unique_ptr< MESSAGE > &&  msg_unique_ptr)
inline

Отправить сообщение на данный mbox.

Экземпляр сообщения определяется берется из msg_unique_ptr, далее за удаление сообщения отвечает SO.

Аргументы
msg_unique_ptrУмный указатель на экземпляр сообщения.

Перекрестные ссылки deliver_message().

template<class MESSAGE >
void so_5::rt::mbox_t::deliver_message ( )
inline

Отправить сообщение на данный mbox.

Для тех случаев когда сообщение является сигналом и реального экземпларя сообщения создавать не нужно.

Используется в deliver_message().

virtual void so_5::rt::mbox_t::subscribe_first_event_handler ( const type_wrapper_t type_wrapper,
std::unique_ptr< impl::message_consumer_link_t > &  message_consumer_link,
const event_handler_caller_ref_t event_handler_caller_ref 
)
protectedpure virtual

Добавить потребителя сообщения, который является обработчиком события.

Метод вызывается, когда агент первый раз подписывается на сообщение заданного типа.

Аргументы
type_wrapperТип сообщения.
message_consumer_linkУказатель на потребителя сообщения, который будет вставлен.
event_handler_caller_refПервый вызыватель, который будет вставлен.

Замещается в so_5::rt::impl::named_local_mbox_t и so_5::rt::impl::local_mbox_t.

Используется в so_5::rt::agent_t::create_event_subscription() и so_5::rt::impl::named_local_mbox_t::subscribe_first_event_handler().

virtual ret_code_t so_5::rt::mbox_t::subscribe_more_event_handler ( const type_wrapper_t type_wrapper,
impl::message_consumer_link_t message_consumer_link,
const event_handler_caller_ref_t event_handler_caller_ref,
throwing_strategy_t  throwing_strategy 
)
protectedpure virtual

Добавить потребителя сообщения, который является обработчиком события.

Метод вызывается, когда агент подписывается на тип сообщения, на которое он ранее уже подписывался.

Аргументы
type_wrapperТип сообщения.
message_consumer_linkУказатель на потребителя сообщения который содержит ранее созданные подписки.
event_handler_caller_refОчередной вызыватель для подписки.
throwing_strategyБросать ли исключения в случае подписки.

Замещается в so_5::rt::impl::named_local_mbox_t и so_5::rt::impl::local_mbox_t.

Используется в so_5::rt::agent_t::create_event_subscription() и so_5::rt::impl::named_local_mbox_t::subscribe_more_event_handler().

virtual ret_code_t so_5::rt::mbox_t::unsubscribe_event_handler ( const type_wrapper_t type_wrapper,
impl::message_consumer_link_t message_consumer_link,
const event_handler_caller_ref_t event_handler_caller_ref,
bool &  is_last_subscription,
throwing_strategy_t  throwing_strategy 
)
protectedpure virtual

Удалить потребителя сообщения, который является обработчиком события.

Аргументы
type_wrapperТип сообщения.
message_consumer_linkУказатель на потребителя сообщения который содержит ранее созданные подписки.
event_handler_caller_refВызыватель, который надо удалить.
is_last_subscriptionПриемник для флага, является ли удаляемый вызыватель последним в подписке агента на заданный тип сообщения.
throwing_strategyБросать ли исключения в случае подписки.

Замещается в so_5::rt::impl::named_local_mbox_t и so_5::rt::impl::local_mbox_t.

Используется в so_5::rt::agent_t::destroy_all_subscriptions(), so_5::rt::agent_t::destroy_event_subscription() и so_5::rt::impl::named_local_mbox_t::unsubscribe_event_handler().

virtual void so_5::rt::mbox_t::unsubscribe_event_handler ( const type_wrapper_t type_wrapper,
impl::message_consumer_link_t message_consumer_link 
)
protectedpure virtual

Удалить всех потребителей сообщения.

Аргументы
type_wrapperТип сообщения.
message_consumer_linkУказатель на потребителя сообщения который содержит ранее созданные подписки.

Замещается в so_5::rt::impl::named_local_mbox_t и so_5::rt::impl::local_mbox_t.


Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:23. Создано системой  doxygen1.8.3.1 Intervale SourceForge.net Logo