Диспетчер использует внешний объект-таймер. Время жизни объекта-таймера определяется в конструкторе.
Открытые типы | |
typedef ACE_Hash_Map_Manager_Ex < std::string, work_thread_t *, ACE_Hash< std::string > , ACE_Equal_To< std::string > , ACE_Null_Mutex > | threads_hash_map_t |
Тип hash_table для хранения карты активных агентов. | |
Открытые члены | |
dispatcher_t (so_4::timer_thread::timer_thread_t *timer, so_4::destroy_timer_flags_t destruction_flag) | |
Основной инициализирующий конструктор. | |
virtual ret_code_t | start () |
Запустить диспетчер. | |
virtual void | shutdown () |
Дать сигнал диспетчеру завершить работу. | |
virtual void | wait () |
Ожидать полного завершения работы диспетчера. | |
virtual void | setup_dispatcher_binding (so_4::rt::agent_t &agent) |
Выполнение привязки агента к конкретному ресурсу диспетчера. | |
virtual void | push_delayed_msg (const so_4::rt::msg_data_t &msg_data, unsigned int delay, unsigned int period=0) |
Поставить отложенное сообщение в очередь. | |
virtual void | destroy_all_agent_msg (const std::string &agent_name) |
Изъять все ожидающие сообщения данного агента. | |
Открытые статические члены | |
static void | introduce_active_object (const std::string &agent_name) |
Указать диспетчеру создать нить для нового активного объекта. Нить создается только если нет нити для агента с таким именем. | |
static void | remove_active_object (const std::string &agent_name) |
Указать диспетчеру уничтожить нить для активного объекта. | |
Закрытые статические члены | |
static void | destroy_active_obj_thread_set (threads_hash_map_t &s) |
Выполнить очиску множества нитей активных объектов с физическим уничтожением объектов, которые в нем находятся. Ожидание завершения работы нитей не выполняется. | |
Закрытые данные | |
so_4::destroy_timer_flags_t | m_timer_destruction_flag |
Признак того, что таймер нужно уничтожать в деструкторе. | |
std::auto_ptr < so_4::timer_thread::timer_thread_t > | m_timer_ptr |
Нить таймера, которую нужно использовать для работы диспетчера. | |
work_thread_t | m_passive_obj_thread |
Единственная нить для пассивных объектов. | |
bool | m_is_started |
Признак того, что диспетчер запущен. |
typedef ACE_Hash_Map_Manager_Ex< std::string, work_thread_t *, ACE_Hash< std::string >, ACE_Equal_To< std::string >, ACE_Null_Mutex > so_4::disp::active_obj::impl::dispatcher_t::threads_hash_map_t |
Тип hash_table для хранения карты активных агентов.
so_4::disp::active_obj::impl::dispatcher_t::dispatcher_t | ( | so_4::timer_thread::timer_thread_t * | timer, | |
so_4::destroy_timer_flags_t | destruction_flag | |||
) |
Основной инициализирующий конструктор.
timer | Выделенный диспетчеру таймер. Должен быть динамически созданным объектом, если so_4::rt::auto_destroy_timer == destruction_flag. |
destruction_flag | Признак необходимости уничтожения объекта нити таймера в деструкторе. |
Перекрестные ссылки so_4::disp::active_obj::impl::context() и so_4::disp::active_obj::impl::context_t::set_active_obj_disp().
void so_4::disp::active_obj::impl::dispatcher_t::setup_dispatcher_binding | ( | so_4::rt::agent_t & | agent | ) | [virtual] |
Выполнение привязки агента к конкретному ресурсу диспетчера.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки so_4::disp::active_obj::impl::context(), m_passive_obj_thread, so_4::rt::agent_t::so_query_name() и so_4::rt::agent_t::so_set_dispatcher_binding().
void so_4::disp::active_obj::impl::dispatcher_t::push_delayed_msg | ( | const so_4::rt::msg_data_t & | msg_data, | |
unsigned int | delay, | |||
unsigned int | period = 0 | |||
) | [virtual] |
Поставить отложенное сообщение в очередь.
delay | Для переодического сообщения указывает время, через которое сообщение должно возникнуть в первый раз |
period | Отличен от 0 для переодических сообщений |
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки m_timer_ptr.
void so_4::disp::active_obj::impl::dispatcher_t::introduce_active_object | ( | const std::string & | agent_name | ) | [static] |
Указать диспетчеру создать нить для нового активного объекта. Нить создается только если нет нити для агента с таким именем.
agent_name | Эта строка должна существовать все время, пока существует агент! |
Перекрестные ссылки so_4::disp::active_obj::impl::context(), SO_4_ABORT_ON_ACE_ERROR и so_4::disp::active_obj::impl::context_t::try_rehash_threds_hash_map().
Используется в so_4::disp::active_obj::impl::active_obj_traits_t::init().
std::auto_ptr< so_4::timer_thread::timer_thread_t > so_4::disp::active_obj::impl::dispatcher_t::m_timer_ptr [private] |
Нить таймера, которую нужно использовать для работы диспетчера.
Используется в destroy_all_agent_msg(), push_delayed_msg(), shutdown(), start() и wait().
bool so_4::disp::active_obj::impl::dispatcher_t::m_is_started [private] |
Признак того, что диспетчер запущен.
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |