void a_owner_t::evt_make_child( const so_4::rt::event_data_t & ) { // Создаем дочернего агента, на сообщения которого // нужно подписаться. a_child_t * child = new a_child_t(); // Создаем дочернюю кооперацию. so_4::rt::dyn_agent_coop_t * child_coop = new so_4::rt::dyn_agent_coop_t( child ); // И подписываемся на сообщения дочернего агента. so_4::rt::def_subscr_hook( *child_coop, // Подписываем родительского агента. *this, "evt_child_start_ok", // На сообщения дочернего агента. *child, "msg_start_ok" ); so_4::rt::def_subscr_hook( *child_coop, // Подписываем родительского агента. *this, "evt_child_start_fail", // На сообщения дочернего агента. *child, "msg_start_fail" ); // Регистрируем кооперацию. so_4::rt::dyn_agent_coop_helper_t child_coop_helper( child_coop ); ... }
so_4::rt::def_subscr_hook( *child_coop, *this, "evt_child_start_ok", *child, "msg_start_ok", 0, // Приоритет. &std::cerr, // Для сообщений об ошибках. so_4::rt::evt_subscr_t::insend_dispatching );
Открытые члены | |
def_subscr_hook_t (so_4::rt::agent_t *agent_to_subscribe, const std::string &evt_to_subscribe, const std::string &msg_owner, const std::string &msg_name, int priority=0, std::ostream *err=&std::cerr, const evt_subscr_t::dispatching_t &dispatching=evt_subscr_t::normal_dispatching) | |
Основной инициализирующий конструктор. | |
virtual void | hook () |
Обработать подписку агентов кооперации. | |
Закрытые данные | |
so_4::rt::agent_t * | m_agent_to_subscribe |
Агент, у которого нужно вызывать so_subscribe(). | |
std::string | m_evt_to_subscribe |
Имя события, которое нужно подписать. | |
std::string | m_msg_owner |
Имя агента-владельца сообщения. | |
std::string | m_msg_name |
Имя сообщения инцидента. | |
int | m_priority |
Приоритет события. | |
std::ostream * | m_err |
Поток для вывода сообщений об ошибках подписки. | |
evt_subscr_t::dispatching_t | m_dispatching |
Тип диспетчеризации события. |
so_4::rt::def_subscr_hook_t::def_subscr_hook_t | ( | so_4::rt::agent_t * | agent_to_subscribe, | |
const std::string & | evt_to_subscribe, | |||
const std::string & | msg_owner, | |||
const std::string & | msg_name, | |||
int | priority = 0 , |
|||
std::ostream * | err = &std::cerr , |
|||
const evt_subscr_t::dispatching_t & | dispatching = evt_subscr_t::normal_dispatching | |||
) |
Основной инициализирующий конструктор.
agent_to_subscribe | Агент, у которого нужно вызывать so_subscribe(). |
evt_to_subscribe | Имя события, которое нужно подписать. |
msg_owner | Имя агента-владельца сообщения. |
msg_name | Имя сообщения инцидента. |
priority | Приоритет события. |
err | Поток для вывода сообщений об ошибках подписки. |
dispatching | Тип диспетчеризации события. |
Используется в so_4::rt::def_subscr_hook().
void so_4::rt::def_subscr_hook_t::hook | ( | ) | [virtual] |
Обработать подписку агентов кооперации.
Вызывается ПЕРЕД тем, как у агентов кооперации будет вызван метод so_4::rt::agent_t::so_on_subscription().
Замещает so_4::rt::subscr_hook_t.
Перекрестные ссылки so_4::rt::evt_subscr_t::insend_dispatching, m_agent_to_subscribe, m_dispatching, m_err, m_evt_to_subscribe, m_msg_name, m_msg_owner, m_priority, so_4::rt::agent_t::so_subscribe() и so_4::rt::agent_t::so_subscribe_insend_event().
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:49 2008. Создано системой 1.5.6 |