Для того, чтобы сделать агент работал на контексте Qt GUI нити необходимо вызвать метод introduce_agent(). При дерегистрации такого агента необходимо вызвать метод remove_agent().
Открытые члены | |
dispatcher_t (so_4::rt::dispatcher_t *subordinate_disp, unsigned short qt_event_delta) | |
Основной инициализирующий конструктор. | |
virtual ret_code_t | start () |
Запустить диспетчер. | |
virtual void | shutdown () |
Дать сигнал диспетчеру завершить работу. | |
virtual void | wait () |
Ожидать полного завершения работы диспетчера. | |
virtual void | setup_dispatcher_binding (so_4::rt::agent_t &agent) |
Выполнение привязки агента к конкретному ресурсу диспетчера. | |
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) |
Добавить еще одного агента для Qt GUI нити. | |
static void | remove_agent (const std::string &agent_name) |
Изъять агента из Qt GUI нити. | |
static void | try_run_qt_ui_agent_event () |
Попытаться выполнить одну ожидающую заявку для агента Qt GUI нити. | |
Закрытые типы | |
typedef std::set< std::string > | agent_set_t |
Тип множества имен агентов Qt GUI нити. | |
Закрытые статические члены | |
static ACE_Thread_Mutex & | lock () |
Замок для синхронизации доступа к внутренним частям диспетчера. | |
Закрытые данные | |
std::auto_ptr < so_4::rt::dispatcher_t > | m_subordinate_disp |
Подчиненный диспетчер. | |
std::auto_ptr < qt_event_processor_t > | m_qt_event_processor |
Объект, который отвечает за обработку QEvent-ов, связанных с нашим диспетчером. | |
so_4::disp::reuse::gui_work_indicator::indicator_t | m_gui_work |
Индикатор того, что GUI нить выполняет обработку события. | |
agent_set_t | m_agents |
Имена агентов Qt GUI нити. | |
demand_queue_t | m_demands |
Очередь заявок для агентов Qt GUI нити. | |
unsigned short | m_qt_event_delta |
Значение для получения уникального идентификатора QEvent. | |
Закрытые статические данные | |
static dispatcher_t * | m_instance |
Указатель на единственный объект диспетчер. Ссылка на этот объект будет передаваться в рабочие нити для активных групп. |
so_4::disp::qt_ui::impl::dispatcher_t::dispatcher_t | ( | so_4::rt::dispatcher_t * | subordinate_disp, | |
unsigned short | qt_event_delta | |||
) |
Основной инициализирующий конструктор.
subordinate_disp | Подчиненный диспетчер. |
qt_event_delta | Значение для получения уникального идентификатора QEvent. |
Перекрестные ссылки lock() и m_instance.
ret_code_t so_4::disp::qt_ui::impl::dispatcher_t::start | ( | ) | [virtual] |
Запустить диспетчер.
Сначала запускается подчиненный диспетчер. Затем, если все прошло нормально, наш диспетчер.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки m_demands, m_subordinate_disp и so_4::disp::reuse::work_thread::demand_queue_t::start().
void so_4::disp::qt_ui::impl::dispatcher_t::shutdown | ( | ) | [virtual] |
Дать сигнал диспетчеру завершить работу.
Вызывается shutdown у подчиненного диспетчера.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки m_demands, m_subordinate_disp и so_4::disp::reuse::work_thread::demand_queue_t::shutdown().
void so_4::disp::qt_ui::impl::dispatcher_t::wait | ( | ) | [virtual] |
Ожидать полного завершения работы диспетчера.
Сначала ожидается останов подчиненного диспетчера, затем уничтожаются все ожидающие заявки для агентов Qt GUI нити.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки so_4::disp::reuse::work_thread::demand_queue_t::destroy_all_demands(), m_agents, m_demands, m_gui_work, m_subordinate_disp и so_4::disp::reuse::gui_work_indicator::indicator_handler_t::wait_finish().
void so_4::disp::qt_ui::impl::dispatcher_t::setup_dispatcher_binding | ( | so_4::rt::agent_t & | agent | ) | [virtual] |
Выполнение привязки агента к конкретному ресурсу диспетчера.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки lock(), m_agents, m_subordinate_disp, so_4::rt::agent_t::so_query_name() и so_4::rt::agent_t::so_set_dispatcher_binding().
void so_4::disp::qt_ui::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_subordinate_disp.
void so_4::disp::qt_ui::impl::dispatcher_t::destroy_all_agent_msg | ( | const std::string & | agent_name | ) | [virtual] |
Изъять все ожидающие сообщения данного агента.
Задействуется подчиненный диспетчер.
Замещает so_4::rt::dispatcher_t.
Перекрестные ссылки m_subordinate_disp.
void so_4::disp::qt_ui::impl::dispatcher_t::introduce_agent | ( | const std::string & | agent_name | ) | [static] |
Добавить еще одного агента для Qt GUI нити.
agent_name | Имя агента. |
Перекрестные ссылки lock(), m_agents и m_instance.
Используется в so_4::disp::qt_ui::impl::traits_t::init().
void so_4::disp::qt_ui::impl::dispatcher_t::remove_agent | ( | const std::string & | agent_name | ) | [static] |
Изъять агента из Qt GUI нити.
agent_name | Имя агента. |
Перекрестные ссылки lock(), m_agents и m_instance.
Используется в so_4::disp::qt_ui::impl::traits_t::deinit().
void so_4::disp::qt_ui::impl::dispatcher_t::try_run_qt_ui_agent_event | ( | ) | [static] |
Попытаться выполнить одну ожидающую заявку для агента Qt GUI нити.
Перекрестные ссылки so_4::disp::reuse::work_thread::demand_queue_t::demand_extracted, so_4::disp::reuse::gui_work_indicator::indicator_handler_t::finished(), m_demands, m_gui_work, m_instance, so_4::disp::reuse::work_thread::demand_queue_t::no_demands, so_4::disp::reuse::work_thread::demand_queue_t::pop(), so_4::rt::event_data_t::run_event_action(), so_4::disp::reuse::gui_work_indicator::indicator_handler_t::started() и so_4::rt::event_data_t::terminate_event_life().
Используется в so_4::disp::qt_ui::impl::qt_event_processor_t::event().
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |