Класс 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.

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

auto_ptr_3::obj_ptr_t< impl::channels_filters_tm_channels_filters_ptr
 каналов и фильтров.
auto_ptr_3::obj_ptr_t< impl::servers_filters_tm_servers_filters_ptr
 каналов и их входящих фильтров.
auto_ptr_3::obj_ptr_t< so_4::sop::filter_tm_default_filter_ptr
 еще не установлен.
auto_ptr_3::obj_ptr_t< impl::channels_times_tm_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().


Методы

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

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

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

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

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

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-событием.

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

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

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

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

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

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

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

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

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

Приоритет:
1
Внимание:
Приоритет данного события должен быть выше приоритета события evt_sop_package(). В противном случае могут не правильно обрабатываться последовательно идующие SOP-пакеты "установить фильтр" и "отослать сообщение". Эти пакеты будут обрабатываться последовательно, двумя событиями evt_sop_package(). И только после этого обработается событие evt_set_filter, хотя оно должно было быть обработано до сразу после обработки SOP-пакета "установить фильтр".

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

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

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

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

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

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

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

В секундах.

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

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

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

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

Переопределяет метод предка 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.

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.


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

auto_ptr_3::obj_ptr_t< so_4::sop::filter_t > so_4::rt::comm::a_communicator_t::m_default_filter_ptr [private]
 

еще не установлен.

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

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

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


Документация по SObjectizer. Последние изменения: Thu Jan 12 10:52:51 2006. Создано системой  doxygen 1.4.6-NO
Hosted by uCoz