Граф наследования:so_4::disp::win_ui::impl::dispatcher_t:
Данный диспетчер нуждается во вспомогательном диспетчере, который обрабатывает события всех остальных агентов и отложенные, а так же переодические события.
Вспомогательный диспетчер должен быть создан отдельно и указан диспетчеру главной нити в конструкторе. Время жизни вспомогательного диспетчера должно быть больше, чем время жизни диспетчера главной нити.
ВНИМАНИЕ: данный класс спроектирован так, чтобы в программе был только один объект этого типа.
Открытые члены | |
dispatcher_t (so_4::rt::dispatcher_t &real_disp) | |
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_agent (const std::string &agent_name) |
Указать, что появился еще один агент главной нити. | |
static void | remove_agent (const std::string &agent_name) |
Указать, что удаляется агент главной нити. | |
static void | run_event (const so_4::rt::event_data_t &data) |
Запустить событие на обработку. | |
Статические открытые данные | |
static dispatcher_t * | m_disp |
Указатель на единственный объект диспетчер. | |
static demand_queue_t | m_demands |
Очередь заявок агентов главной нити. | |
Закрытые типы | |
typedef std::set< std::string > | agent_name_set_t |
Тип множества имен агентов главной нити. | |
Закрытые данные | |
so_4::rt::dispatcher_t & | m_real_disp |
Вспомогательный диспетчер. | |
Закрытые статические данные | |
static so_4::mutex::mutex_sem_t | m_lock |
частям диспетчера. | |
static agent_name_set_t | m_agents |
Имена существующих агентов главной нити. |
|
Поставить отложенное сообщение в очередь.
Замещает so_4::rt::dispatcher_t. |
|
Указатель на единственный объект диспетчер. Будет использоваться для запуска обработчиков событий. |
|
Вспомогательный диспетчер. Обрабатывает события всех остальных агентов и таймер. |