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

Граф наследования:so_4::rt::comm::a_sop_incoming_channel_processor_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/server.cpp и sample/high_traffic/server.cpp.


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

 a_sop_incoming_channel_processor_t (const std::string &name, so_4::transport_layer::acceptor_controller_auto_ptr_t acceptor_controller, so_4::sop::filter_auto_ptr_t filter=so_4::sop::filter_auto_ptr_t())
Относящиеся к SObjectizer-у части агента.
virtual const char * so_query_type () const
 Имя типа агента.
virtual void so_on_subscription ()
 Подписка событий агента.
virtual void so_on_deregistration ()
 Обработать дерегистрацию агента.
void evt_start ()
 Реакция на регистрацию в SObjectizer.
void evt_sop_client_handshake (const msg_sop_client_handshake &cmd)
 Реакция на запрос handshake от клиента.
void on_enter_st_failed (const std::string &)
 Обработчик входа в состояние st_failed.

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

Реализация унаследованных методов.
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
 Псевдоним для базового типа.

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

so_4::transport_layer::acceptor_controller_auto_ptr_t m_acceptor
 Интерфейс для управление серверным каналом.
so_4::sop::filter_auto_ptr_t m_filter
 Фильтр для клиентов.

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

so_4::rt::comm::msg_sop_client_handshake so_4::rt::comm::a_sop_incoming_channel_processor_t::a_sop_incoming_channel_processor_t ( const std::string &  name,
so_4::transport_layer::acceptor_controller_auto_ptr_t  acceptor_controller,
so_4::sop::filter_auto_ptr_t  filter = so_4::sop::filter_auto_ptr_t() 
)

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

Аргументы:
name  Имя агента.
acceptor_controller  Интерфейс управления серверным каналом.
filter  Серверный фильтр для всех клиентов. Если равен 0, то используются только собственные фильтры каждого клиента.


Методы

virtual const char* so_4::rt::comm::a_sop_incoming_channel_processor_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_incoming_channel_processor_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_incoming_channel_processor_t::so_on_deregistration (  )  [virtual]

Обработать дерегистрацию агента.

Этот метод вызывается у агента уже после того, как агент был вычеркнут из SObjectizer и после того, как было разослано сообщение msg_coop_deregistered.

Данный метод для агента выполняет роль деструктора.

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

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), m_acceptor, m_filter, so_4::api::send_msg_safely(), so_4::rt::comm::a_channel_processor_base_t::so_on_deregistration() и so_4::rt::agent_t::so_query_name().

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

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

Создает серверный канал. Если это удалось, то инициирует периодическое сообщение msg_timer.

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), so_4::transport_layer::create_std_channel_owner_notificator_factory(), m_acceptor, m_filter, so_4::rt::comm::a_channel_processor_base_t::make_comm_channel(), 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_incoming_channel_processor_t::evt_sop_client_handshake ( const msg_sop_client_handshake cmd  ) 

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

Формирует ответ, сразу же записывает его в канал. Если нужно, то меняет 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_info_t::compression(), so_4::rt::comm::impl::format_handshake_resp(), so_4::rt::comm::msg_sop_client_handshake::m_channel, so_4::rt::comm::msg_sop_client_handshake::m_request, so_4::rt::comm_buf_t::ptr(), so_4::sop::handshake_resp_info_t::set_compression_algorithm(), so_4::rt::comm_buf_t::size(), so_4::rt::comm::a_channel_processor_base_t::write_to_channel() и so_4::sop::handshake::compression_t::zlib().

void so_4::rt::comm::a_sop_incoming_channel_processor_t::on_enter_st_failed ( const std::string &   ) 

Обработчик входа в состояние st_failed.

Уничтожает Acceptor, если он был создан.

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

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

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

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

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

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

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

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

Ничего не делает.

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

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

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

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

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


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

Фильтр для клиентов.

Если равен нулю, то используются только получаемые от клиентов фильтры.

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


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