В приложении существует только один агент 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 пакета.
Перекрестные ссылки 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.
Появление нового глобального агента.
Перекрестные ссылки 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.
Отсылка во внешний мир сообщения глобального агента.
Перекрестные ссылки 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 | |||
) |
Обработка установки фильтра канала.
Перекрестные ссылки 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 | ) |
Обработка отключения клиента.
Перекрестные ссылки 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 | |||
) |
Обработка подключения клиента.
Перекрестные ссылки 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 * | ||||
) |
Обработка каналов, в которых слишком долго не было никакой активности.
Перекрестные ссылки 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 | |||
) |
Начать отсчет времени активности канала.
Перекрестные ссылки 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 | ) |
Установить входящий фильтр для серверного канала.
Перекрестные ссылки 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 | ) |
Изъять входящий фильтр для серверного канала.
Перекрестные ссылки 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] |
std::auto_ptr< so_4::sop::filter_t > so_4::rt::comm::a_communicator_t::m_default_filter_ptr [private] |
Фильтр, который используется при получении SOP-пакета из канала, для которого фильтр еще не установлен.
Когда поступает первый SOP-пакет на стороне сервера про коммуникационный канал еще не известно и фильтр для него не установлен. Но SOP-пакет должен быть обработан, т.к. в нем могут быть не только сообщения глобальных агентов, но и команда установки фильтра.
В этом случае используется фильтр, который запрещает обработку любых сообщений, но разрешает обработку других SOP-команд.
Этот фильтр создается один раз и существует все время, пока живет агент-коммуникатор.
Используется в evt_sop_package().
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:49 2008. Создано системой 1.5.6 |