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

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

so_4::rt::agent_t

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


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

Основной агент для реализации поддержки SOP.

В приложении существует только один агент a_communicator. Этот агент отвечает за отправку во внешний мир сообщений глобальных агентов через SOP. А так же за преобразование входящих SOP-пакетов в вызовы API и сообщения.

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

 a_communicator_t ()
virtual const char * so_query_type () const
 Имя типа агента.
virtual void so_on_subscription ()
 Подписка событий агента.
virtual void so_on_deregistration ()
 Обработать дерегистрацию агента.
void evt_sop_package (const event_data_t &data, msg_sop_package *cmd)
 Событие агента a_communicator.
void evt_global_agent (const event_data_t &data)
 Событие агента a_communicator.
void evt_global_agent_msg (const event_data_t &data)
 Событие агента a_communicator.
void evt_set_filter (const event_data_t &data, const msg_set_filter *cmd)
 Обработка установки фильтра канала.
void evt_channel_destroyed (const msg_channel_destroyed &cmd)
 Обработка отключения клиента.
void evt_client_connected (const event_data_t &data, const msg_client_connected *cmd)
 Обработка подключения клиента.
void evt_check_no_activity_time (const event_data_t &, const msg_check_no_activity_time *)
 Обработка каналов, в которых слишком долго не было никакой активности.
void evt_start_channel_timing (const event_data_t &, const msg_start_channel_timing *cmd)
 Начать отсчет времени активности канала.
void evt_set_server_filter (const msg_set_server_filter *cmd)
 Установить входящий фильтр для серверного канала.
void evt_remove_server_filter (const msg_remove_server_filter *cmd)
 Изъять входящий фильтр для серверного канала.

Открытые статические члены

static const std::string & query_agent_name ()
 Имя, под которым агент зарегистрирован в системе.

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

void subscribe_to_agent_msgs (const std::string &agent, const std::string &name)
 Осуществление подписки на сообщения глобального агента.

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

unsigned int query_check_no_activity_timeout () const
 Период для сообщения msg_check_no_activity_time.

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

std::auto_ptr
< impl::channels_filters_t
m_channels_filters_ptr
 Карта соответствия между идентификаторами каналов и фильтров.
std::auto_ptr
< impl::servers_filters_t
m_servers_filters_ptr
 Карта соответствия между именами агентов серверных каналов и их входящих фильтров.
std::auto_ptr
< so_4::sop::filter_t
m_default_filter_ptr
 Фильтр, который используется при получении SOP-пакета из канала, для которого фильтр еще не установлен.
std::auto_ptr
< impl::channels_times_t
m_channels_times_ptr
 Информация о времени получения последнего пакета из каналов.

Закрытые статические данные

static std::string m_agent_name
 Имя агента в системе.

Классы

struct  msg_check_no_activity_time
 Переодическое сообщение проверки отсутствия новых данных в канале. Подробнее...


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

so_4::rt::comm::a_communicator_t::a_communicator_t (  ) 

Сразу назначает имя агенту. Имя агента определяется функцией query_agent_name().


Методы

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

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

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

Замещает so_4::rt::agent_t.

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

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

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

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

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

Замещает so_4::rt::agent_t.

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

void so_4::rt::comm::a_communicator_t::so_on_deregistration (  )  [virtual]

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

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

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

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

Перекрестные ссылки m_channels_filters_ptr и m_channels_times_ptr.

void so_4::rt::comm::a_communicator_t::evt_sop_package ( const event_data_t data,
msg_sop_package cmd 
)

Событие агента a_communicator.

Разбор SOP пакета.

Инцидент(ы):
a_communicator.msg_sop_package
Приоритет:
0

Перекрестные ссылки so_4::rt::comm_channel_t::comm_agent(), so_4::rt::comm::impl::handle_package(), so_4::rt::comm::msg_sop_package::m_channel, m_channels_filters_ptr, m_channels_times_ptr, m_default_filter_ptr, so_4::rt::comm::msg_sop_package::m_package, m_servers_filters_ptr и so_4::rt::comm::msg_sop_package::unblock_channel().

void so_4::rt::comm::a_communicator_t::evt_global_agent ( const event_data_t data  ) 

Событие агента a_communicator.

Появление нового глобального агента.

Инцидент(ы):
a_sobjectizer.msg_global_agent
Приоритет:
0
Заметки:
Начиная с версии 4.2.7 является insend-событием.

Перекрестные ссылки so_4::rt::event_data_t::data(), so_4::rt::msg_global_agent::m_agent_name, so_4::rt::msg_global_agent::m_type_name и subscribe_to_agent_msgs().

void so_4::rt::comm::a_communicator_t::evt_global_agent_msg ( const event_data_t data  ) 

Событие агента a_communicator.

Отсылка во внешний мир сообщения глобального агента.

Инцидент(ы):
все сообщения глобальных агентов.
Приоритет:
0

Перекрестные ссылки so_4::rt::event_data_t::agent(), so_4::rt::comm::create_send_msg_info(), so_4::rt::comm_channel_t::is_null(), so_4::rt::comm_channel_t::localhost(), m_channels_filters_ptr, so_4::rt::comm::impl::make_and_send_package(), so_4::rt::event_data_t::query_impl() и so_4::rt::impl::event_data_impl_t::query_msg_channel_to().

void so_4::rt::comm::a_communicator_t::evt_set_filter ( const event_data_t data,
const msg_set_filter cmd 
)

Обработка установки фильтра канала.

Инцидент(ы):
msg_set_filter
Приоритет:
0
v.4.4.0-b5
Начиная с этой версии сообщение msg_set_filter отсылают только транспортные агенты после того, как завершат процедуру handshake. Получив msg_set_filter агент-коммуникатор:
  • сохраняет фильтр для канала;
  • отсылает фильтр в канал чтобы фильтр использовался удаленной стороной;
  • отсылает сообщения msg_client_connected.

Перекрестные ссылки so_4::rt::comm::communicator_agent_name(), so_4::rt::comm::msg_set_filter::m_channel, m_channels_filters_ptr, so_4::rt::comm::msg_set_filter::m_filter, so_4::rt::comm::impl::make_and_send_package() и so_4::api::send_msg_safely().

void so_4::rt::comm::a_communicator_t::evt_channel_destroyed ( const msg_channel_destroyed cmd  ) 

Обработка отключения клиента.

Начиная с:
v.4.3.2
Инцидент(ы):
msg_channel_destroyed
Приоритет:
0

Перекрестные ссылки so_4::rt::comm_channel_t::comm_agent(), so_4::rt::comm::msg_channel_destroyed::m_channel, m_channels_filters_ptr, m_channels_times_ptr, so_4::api::send_msg_safely() и so_4::rt::agent_t::so_query_name().

void so_4::rt::comm::a_communicator_t::evt_client_connected ( const event_data_t data,
const msg_client_connected cmd 
)

Обработка подключения клиента.

Начиная с:
v.4.2.7
Ретранслирует сообщение от имени транспортного агента.

Инцидент(ы):
msg_client_connected
Приоритет:
0

Перекрестные ссылки so_4::rt::comm_channel_t::comm_agent(), so_4::rt::comm::msg_client_connected::m_channel и so_4::api::send_msg_safely().

void so_4::rt::comm::a_communicator_t::evt_check_no_activity_time ( const event_data_t ,
const msg_check_no_activity_time  
)

Обработка каналов, в которых слишком долго не было никакой активности.

Начиная с:
v.4.2.4
Приоритет:
0

Перекрестные ссылки so_4::rt::comm::channel_closer(), m_channels_times_ptr и so_4::rt::comm::impl::make_and_send_package().

void so_4::rt::comm::a_communicator_t::evt_start_channel_timing ( const event_data_t ,
const msg_start_channel_timing cmd 
)

Начать отсчет времени активности канала.

Начиная с:
v.4.2.6.3
Подробнее см. so_4: Версия 4.2.6.3. Проблема пингования каналов.

Приоритет:
0

Перекрестные ссылки so_4::rt::comm::msg_start_channel_timing::m_channel и m_channels_times_ptr.

void so_4::rt::comm::a_communicator_t::evt_set_server_filter ( const msg_set_server_filter cmd  ) 

Установить входящий фильтр для серверного канала.

Начиная с:
v.4.2.7
Приоритет:
0

Перекрестные ссылки so_4::rt::comm::msg_set_server_filter::m_agent, so_4::rt::comm::msg_set_server_filter::m_filter и m_servers_filters_ptr.

void so_4::rt::comm::a_communicator_t::evt_remove_server_filter ( const msg_remove_server_filter cmd  ) 

Изъять входящий фильтр для серверного канала.

Начиная с:
v.4.2.7
Приоритет:
0

Перекрестные ссылки so_4::rt::comm::msg_remove_server_filter::m_agent и m_servers_filters_ptr.

unsigned int so_4::rt::comm::a_communicator_t::query_check_no_activity_timeout (  )  const [private]

Период для сообщения msg_check_no_activity_time.

В секундах.

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


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

Фильтр, который используется при получении SOP-пакета из канала, для которого фильтр еще не установлен.

Когда поступает первый SOP-пакет на стороне сервера про коммуникационный канал еще не известно и фильтр для него не установлен. Но SOP-пакет должен быть обработан, т.к. в нем могут быть не только сообщения глобальных агентов, но и команда установки фильтра.

В этом случае используется фильтр, который запрещает обработку любых сообщений, но разрешает обработку других SOP-команд.

Этот фильтр создается один раз и существует все время, пока живет агент-коммуникатор.

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


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