Класс so_4::rt::comm::a_sop_outgoing_channel_t

Граф наследования:so_4::rt::comm::a_sop_outgoing_channel_t:

so_4::rt::comm::a_channel_processor_base_t so_4::rt::comm::handshaking_params_holder_t so_4::rt::agent_t

Полный список членов класса


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

Агент исходящего SOP-канала.

Начиная с:
v.4.4.0-b4 В дополнение к унаследованным владеет следующими сообщениями:
Примеры:

sample/filter/c1.cpp, sample/filter/c2.cpp и sample/high_traffic/client.cpp.


Открытые типы

Собственные сообщения, которые нужны для взаимодействия с контроллером канала.
typedef
so_4::transport_layer::msg_channel_failed 
msg_channel_failed
 Канал не создан.

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

 a_sop_outgoing_channel_t (const std::string &name, so_4::transport_layer::connector_controller_auto_ptr_t connector_controller, so_4::sop::filter_auto_ptr_t filter, disconnect_handler_auto_ptr_t disconnect_handler)
bool set_autoconnect_on_start (bool flag)
 Управление автоматическим началом попыток установления соединения сразу после старта агента.
Относящиеся к SObjectizer-у части агента.
virtual const char * so_query_type () const
 Имя типа агента.
virtual void so_on_subscription ()
 Подписка событий агента.
void evt_start ()
 Реакция на регистрацию в SObjectizer.
void evt_connect ()
 Реакция на сообщение msg_connect.
void evt_channel_failed (const msg_channel_failed &cmd)
 Реакция на неудачную попытку установления соединения.
void evt_sop_client_handshake_resp (const msg_sop_client_handshake_resp &cmd)
 Реакция на получение ответа на запрос handshake.

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

Реализация унаследованных методов.
virtual so_4::ret_code_t on_channel_acception (so_4::transport_layer::channel_controller_t &controller, const comm_channel_t &channel_id)
virtual void on_disconnection_initiated (const comm_channel_t &channel_id)
virtual void on_channel_destroying (const comm_channel_t &channel_id)

Закрытые типы

typedef a_channel_processor_base_t base_type_t
 Псевдоним базового класса.

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

void form_and_send_handshake (const so_4::rt::comm_channel_t &channel)
 Формирование и отсылка в канал handshake-запроса.
void handle_handshake_response (const comm_channel_t &channel, const so_4::sop::handshake_resp_info_t &response)
 Обработка ответа на handshake.

Закрытые данные

so_4::transport_layer::connector_controller_auto_ptr_t m_connector
 Интерфейс для управление установлением соединения.
so_4::sop::filter_auto_ptr_t m_filter
 Фильтр данного канала.
disconnect_handler_auto_ptr_t m_disconnect_handler
 Обработчик разрывов связи.
so_4::transport_layer::channel_id_t m_id_counter
 Счетчик идентификаторов каналов.
bool m_autoconnect_flag
 Признак разрешенности автоматического установления соединения сразу после старта агента в SObjectizer.

Конструктор(ы)

so_4::rt::comm::a_sop_outgoing_channel_t::a_sop_outgoing_channel_t ( const std::string &  name,
so_4::transport_layer::connector_controller_auto_ptr_t  connector_controller,
so_4::sop::filter_auto_ptr_t  filter,
disconnect_handler_auto_ptr_t  disconnect_handler 
)

Конструктор.

Аргументы:
name  Имя агента.
connector_controller  Интерфейс управления попытками установления соединения.
filter  Фильтр, который будет использовать данный агент.
disconnect_handler  Объект, который будет управлять восстановлением связи после обрывов. Может быть нулевым указателем, если автоматическое восстановление связи не предусмотрено.


Методы

bool so_4::rt::comm::a_sop_outgoing_channel_t::set_autoconnect_on_start ( bool  flag  ) 

Управление автоматическим началом попыток установления соединения сразу после старта агента.

По умолчанию агент пытается установить соединение сразу после своей регистрации в SObjectizer-е.

Передав false в этот метод можно запретить агенту выполнять попытки установления соединения сразу после старта. В этом случае агент будет ожидать поступления сообщения msg_connect.

Возвращает:
Предыдущее значения признака автоматического установления соединения после старта.
Аргументы:
flag  true если установка соединения разрешена, false в противном случае.

Перекрестные ссылки m_autoconnect_flag.

virtual const char* so_4::rt::comm::a_sop_outgoing_channel_t::so_query_type (  )  const [virtual]

Имя типа агента.

Автоматически реализуется описанием класса агента посредством макросов SOL4_CLASS_START, SOL4_CLASS_FINISH.

Переопределяет метод предка so_4::rt::comm::a_channel_processor_base_t.

void so_4::rt::comm::a_sop_outgoing_channel_t::so_on_subscription (  )  [virtual]

Подписка событий агента.

Самый первый метод, который вызывается у агента после его регистрации в SObjectizer.

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

У всех агентов регистрируемой кооперации вызываются методы so_on_subscription. Только после этого рассылается сообщение msg_coop_registered.

Переопределяет метод предка so_4::rt::comm::a_channel_processor_base_t.

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), so_4::rt::comm::a_channel_processor_base_t::so_on_subscription(), so_4::rt::agent_t::so_subscribe() и so_4::rt::sobjectizer_agent_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::evt_start (  ) 

Реакция на регистрацию в SObjectizer.

Инициирует периодическое сообщение msg_timer.

Если разрешено автоматическое установление соединение после старта, то отсылает самому себе сообщение msg_connect.

Перекрестные ссылки m_autoconnect_flag, so_4::api::send_msg() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::evt_connect (  ) 

Реакция на сообщение msg_connect.

Инициирует попытку установления соединения.

Перекрестные ссылки so_4::transport_layer::create_std_channel_owner_notificator(), m_connector, m_disconnect_handler, so_4::api::send_msg_safely(), so_4::rt::agent_t::so_change_state() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::evt_channel_failed ( const msg_channel_failed cmd  ) 

Реакция на неудачную попытку установления соединения.

Отсылает msg_fail.

Задействует disconnect_handler для автоматической попытки повтора установления соединения.

Перекрестные ссылки m_disconnect_handler, so_4::transport_layer::msg_channel_failed::m_reason, so_4::api::send_msg_safely(), so_4::rt::agent_t::so_change_state() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::evt_sop_client_handshake_resp ( const msg_sop_client_handshake_resp cmd  ) 

Реакция на получение ответа на запрос handshake.

Начиная с:
v.4.4.0-b5
Переводит агента в состояние st_connected.

Если нужно, меняет data_processor для канала.

Отсылает агенту-коммуникатору фильтр канала.

Перекрестные ссылки so_4::rt::comm_channel_t::client(), so_4::rt::comm::communicator_agent_name(), handle_handshake_response(), so_4::rt::comm::a_channel_processor_base_t::initiate_disconnection(), so_4::rt::comm::msg_sop_client_handshake_resp::m_channel, m_filter, so_4::rt::comm::msg_sop_client_handshake_resp::m_response, so_4::api::send_msg_safely() и so_4::rt::agent_t::so_change_state().

so_4::ret_code_t so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_acception ( so_4::transport_layer::channel_controller_t controller,
const comm_channel_t channel_id 
) [protected, virtual]

Устанавливает для канала simple_sop_input_data_processor.

Отсылает сообщения msg_success, msg_set_filter и msg_start_channel_timing.

Переводит агента в состояние st_connected.

Аргументы:
controller  Контроллер канала.
channel_id  Индентификатор нового канала.

Замещает so_4::rt::comm::a_channel_processor_base_t.

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), form_and_send_handshake(), so_4::api::send_msg_safely(), so_4::transport_layer::channel_controller_t::set_data_processor(), so_4::rt::agent_t::so_change_state() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::on_disconnection_initiated ( const comm_channel_t channel_id  )  [protected, virtual]

Переводит агента в состояние st_disconnecting.

Аргументы:
channel_id  Идентификатор закрываемого канала.

Замещает so_4::rt::comm::a_channel_processor_base_t.

Перекрестные ссылки so_4::rt::agent_t::so_change_state().

void so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_destroying ( const comm_channel_t channel_id  )  [protected, virtual]

Отсылает сообщение msg_client_disconnected.

Переводит агента в состояние st_disconnected.

Отсылает сообщение msg_channel_destroyed.

Если есть disconnect_handler, то задействует его метод on_lost.

Аргументы:
channel_id  Идентификатор удаляемого канала.

Замещает so_4::rt::comm::a_channel_processor_base_t.

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), m_disconnect_handler, so_4::api::send_msg_safely(), so_4::rt::agent_t::so_change_state() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_sop_outgoing_channel_t::form_and_send_handshake ( const so_4::rt::comm_channel_t channel  )  [private]

Формирование и отсылка в канал handshake-запроса.

Начиная с:
v.4.4.0-b5
Аргументы:
channel  Канал, в который нужно направить handshake.

Перекрестные ссылки so_4::rt::comm::impl::initiate_handshake(), so_4::sop::handshake_info_t::set_compression() и so_4::sop::handshake::compression_t::zlib().

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

void so_4::rt::comm::a_sop_outgoing_channel_t::handle_handshake_response ( const comm_channel_t channel,
const so_4::sop::handshake_resp_info_t response 
) [private]

Обработка ответа на handshake.

Начиная с:
v.4.4.0-b5 Если нужно использовать какой-либо трансформатор трафика, то изменяет data_processor для канала.

Перекрестные ссылки so_4::rt::comm::a_channel_processor_base_t::change_channel_data_processor(), so_4::rt::comm_channel_t::client(), so_4::sop::handshake_resp_info_t::compression_algorithm(), so_4::sop::handshake_resp_info_t::is_compression_defined() и so_4::sop::handshake::compression_t::zlib().

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


Данные класса

Признак разрешенности автоматического установления соединения сразу после старта агента в SObjectizer.

Значение true указывает, что попытка установления соединения будет предпринята сразу после регистрации агента в SObjectizer.

По умолчанию: true.

Используется в evt_start() и set_autoconnect_on_start().


Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:49 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo