Класс so_4::disp::active_obj::impl::dispatcher_t

Граф наследования:so_4::disp::active_obj::impl::dispatcher_t:

so_4::rt::dispatcher_t Полный список членов класса

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

Диспетчер с отдельной нитью для каждого "активного объекта" и одной рабочей нитью для всех остальных агентов. На каждой нити имеется приоритетная очередь заявок.

Диспетчер использует внешний объект-таймер. Время жизни объекта-таймера определяется в конструкторе.

Внимание:
данный класс спроектирован так, чтобы в программе был только один объект этого типа.


Открытые типы

typedef std::set< thread_info_t,
std::less< thread_info_t > > 
thread_info_set_t
 Тип множества описателей рабочих нитей.

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

 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 dispatch (int priority, const so_4::rt::event_data_t &event_data)
 Выполнить диспетчеризацию события.
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 (thread_info_set_t &s)
 выполняется.

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

auto_ptr_3::soft_obj_ptr_t<
so_4::timer_thread::timer_thread_t
m_timer_ptr
 работы диспетчера.
auto_ptr_3::obj_ptr_t< work_thread_tm_passive_obj_thread
 Единственная нить для пассивных объектов.
bool m_is_started
 Признак того, что диспетчер запущен.


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

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  Признак необходимости уничтожения объекта нити таймера в деструкторе.


Методы

void so_4::disp::active_obj::impl::dispatcher_t::introduce_active_object const std::string &  agent_name  )  [static]
 

нет нити для агента с таким именем.

Аргументы:
agent_name  Эта строка должна существовать все время, пока существует агент!

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.


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

bool so_4::disp::active_obj::impl::dispatcher_t::m_is_started [private]
 

Признак того, что диспетчер запущен.

Начиная с:
v.4.2.6
Используется для того, чтобы определить, можно ли выводить сообщения об ошибках.


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