SObjectizer
5.1
|
Базовый класс канального агента. Подробнее...
Открытые члены | |
a_channel_base_t (so_5::rt::so_environment_t &env, const so_5::rt::mbox_ref_t ¬ification_mbox) | |
virtual void | so_define_agent () |
Определяет подписку агента на события канала. | |
void | evt_channel_created (const so_5::rt::event_data_t< msg_channel_created > &msg) |
Обработка установки нового соединения. | |
void | evt_channel_failed (const so_5::rt::event_data_t< msg_channel_failed > &msg) |
Обработка ошибки установки нового соединения. | |
void | evt_channel_lost (const so_5::rt::event_data_t< msg_channel_lost > &msg) |
Обработка потери соединения. | |
void | evt_incoming_package (const so_5::rt::event_data_t< so_5_transport::msg_incoming_package > &msg) |
Обработка уведомления о входящем пакете. | |
Открытые члены inherited from so_5::rt::agent_t | |
agent_t (so_environment_t &env) | |
Конструктор агента. Подробнее... | |
const agent_t * | self_ptr () const |
Получить указатель на себя. Подробнее... | |
virtual void | so_evt_start () |
Начальное событие агента. Подробнее... | |
virtual void | so_evt_finish () |
Завершающее событие агента. Подробнее... | |
const state_t & | so_current_state () const |
Получить ссылку на текущее состояние. | |
const std::string & | so_coop_name () const |
Имя кооперации, к которой принадлежит агент. Подробнее... | |
void | so_add_nondestroyable_listener (agent_state_listener_t &state_listener) |
Добавить агенту слушателя, время жизни которого агент не контролирует. | |
void | so_add_destroyable_listener (agent_state_listener_unique_ptr_t state_listener) |
Добавить агенту слушателся, владение которым передается агенту. | |
so_environment_t & | so_environment () |
Получить ссылку на среду SO к которой принадлежит агент. Подробнее... | |
Защищенные члены | |
void | so_add_state_for_channel_events (const so_5::rt::state_t &state) |
Добавить состояние для подписки на события канала. Подробнее... | |
so_5::rt::mbox_ref_t & | query_notification_mbox () |
Получить mbox на который приходят уведомлени о событиях канала. | |
virtual void | so_handle_client_connected (const msg_channel_created &msg)=0 |
Hook-методы обработки событий канала. Подробнее... | |
virtual void | so_handle_client_failed (const msg_channel_failed &msg)=0 |
Обработка при неудачном подключении нового клиента. | |
virtual void | so_handle_client_disconnected (const msg_channel_lost &msg)=0 |
Обработка отключения клиента. | |
virtual void | so_handle_incoming_package (const so_5_transport::msg_incoming_package &msg)=0 |
Обработки очередного пакета клиента. | |
Защищенные члены inherited from so_5::rt::agent_t | |
bool | so_was_defined () const |
Был ли агент определен? Подробнее... | |
const state_t & | so_default_state () const |
Работа с состояниями. Подробнее... | |
ret_code_t | so_change_state (const state_t &new_state, throwing_strategy_t throwing_strategy=THROW_ON_ERROR) |
Сменить состояние. Подробнее... | |
subscription_bind_t | so_subscribe (const mbox_ref_t &mbox_ref) |
Подписка и отписка от сообщения. Подробнее... | |
subscription_unbind_t | so_unsubscribe (const mbox_ref_t &mbox_ref) |
Создать объект для изьятия подписки. Подробнее... | |
Закрытые типы | |
typedef so_5::rt::agent_t | base_type_t |
typedef std::set< const so_5::rt::state_t * > | state_set_t |
Тип списка состояний. | |
Закрытые данные | |
state_set_t | m_states_listeninig_channel_events |
Список состояний для которых подписывать события канала. | |
so_5::rt::mbox_ref_t | m_notification_mbox |
Mbox на который приходят уведомлени о событиях канала. | |
Друзья | |
class | a_server_base_t |
class | a_client_base_t |
Additional Inherited Members | |
Открытые статические члены inherited from so_5::rt::agent_t | |
static void | call_push_event (agent_t &agent, const event_caller_block_ref_t &event_handler_caller, const message_ref_t &message) |
Поставить в очередь событие для выполнения агентом. Подробнее... | |
static void | call_next_event (agent_t &agent) |
Инициировать выполнение очередного события. Подробнее... | |
static void | call_bind_to_disp (agent_t &agent, dispatcher_t &disp) |
Привязать агента к диспетчеру. Подробнее... | |
Базовый класс канального агента.
Служит базовым классом канальных агентов Определяет методы получения уведомлений о событиях канала, и делегирует их обработку hook-методам, которые должны быть переопределены в наследниках.
Наследование от данного класса избавляет от необходимости самому подписывать агента на события канала и хранить mbox для уведомлений. Если наследник определяет дополнительные состояния и хочет получать уведомления о событиях с каналом, то можно добавить состояние в список состояний для подписки на события канала.
so_5_transport::a_channel_base_t::a_channel_base_t | ( | so_5::rt::so_environment_t & | env, |
const so_5::rt::mbox_ref_t & | notification_mbox | ||
) |
notification_mbox | Mbox на который будут приходить уведомления о событиях канала. |
Перекрестные ссылки so_add_state_for_channel_events() и so_5::rt::agent_t::so_default_state().
|
protected |
Добавить состояние для подписки на события канала.
Если наследник определяет дополнительные состояния и надо чтобы события канала обрабатывались в этих дополнительных состояниях, то через so_add_state_for_channel_events их можно добавить в список состояний для которых обрабатываются события канала. Например:
Перекрестные ссылки m_states_listeninig_channel_events и so_5::rt::agent_t::so_was_defined().
Используется в a_channel_base_t().
|
protectedpure virtual |
Hook-методы обработки событий канала.
Обработка появления нового клиента.
Замещается в mbapi_4::comm::a_mbapi_incoming_channel_t и mbapi_4::comm::a_mbapi_outgoing_channel_t.
Используется в evt_channel_created().
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:23. Создано системой 1.8.3.1 |