SObjectizer
5.1
|
Базовый класс почтового ящика. Подробнее...
Открытые члены | |
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_t * | cmp_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.
|
protectedvirtual |
Адрес для проведения операция сравнения.
Реализация по умолчанию возвращает this.
Переопределяется в so_5::rt::impl::named_local_mbox_t.
Используется в so_5::rt::impl::named_local_mbox_t::cmp_ordinal().
|
inline |
Отправить сообщение на данный mbox.
Экземпляр сообщения определяется берется из msg_unique_ptr, далее за удаление сообщения отвечает SO.
msg_unique_ptr | Умный указатель на экземпляр сообщения. |
Перекрестные ссылки 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().
|
inline |
Отправить сообщение на данный mbox.
Экземпляр сообщения определяется берется из msg_unique_ptr, далее за удаление сообщения отвечает SO.
msg_unique_ptr | Умный указатель на экземпляр сообщения. |
Перекрестные ссылки deliver_message().
|
inline |
Отправить сообщение на данный mbox.
Для тех случаев когда сообщение является сигналом и реального экземпларя сообщения создавать не нужно.
Используется в deliver_message().
|
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().
|
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().
|
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().
|
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. Создано системой 1.8.3.1 |