|
SObjectizer
5.1
|
Кооперация агентов. Подробнее...
Классы | |
| struct | agent_with_disp_binder_t |
| Агент и его привязка. Подробнее... | |
Открытые члены | |
| const std::string & | query_coop_name () const |
| Получить имя кооперации. | |
| ret_code_t | add_agent (const agent_ref_t &agent_ref) |
| Добавить агента в кооперацию, владение агентом переходит к gent_coop_t. Подробнее... | |
| ret_code_t | add_agent (const agent_ref_t &agent_ref, disp_binder_unique_ptr_t disp_binder) |
| Добавить агента в кооперацию с указанием привязки к конкретному дисптчеру, владение агентом переходит к agent_coop_t. Подробнее... | |
Открытые статические члены | |
| static agent_coop_unique_ptr_t | create_coop (const nonempty_name_t &name, disp_binder_unique_ptr_t &coop_disp_binder, impl::so_environment_impl_t &env_impl) |
| Создание кооперации. Подробнее... | |
| static void | call_agent_finished (agent_coop_t &coop) |
| static void | call_final_deregister_coop (agent_coop_t *coop) |
| Выполнить окончательную дерегистрацию кооперации. | |
Закрытые типы | |
|
typedef std::vector < agent_with_disp_binder_t > | agent_array_t |
| Тип для массива агентов c их привязками к диспетчерам. | |
Закрытые члены | |
| agent_coop_t (const nonempty_name_t &name, disp_binder_unique_ptr_t &coop_disp_binder, impl::so_environment_impl_t &env_impl) | |
| Конструктор кооперации. Подробнее... | |
| void | bind_agents_to_coop () |
| Привязать агентов к кооперации. | |
| void | define_all_agents () |
| Вызвать у всех агентов метод so_define_agent(). | |
| void | undefine_all_agents () |
| Вызвать у всех агентов метод undefine_agent(). | |
| void | undefine_some_agents (agent_array_t::iterator it) |
| Вызвать у агентов undefine_agent(). Подробнее... | |
| void | bind_agents_to_disp () |
| Выполнить привязку агентов к диспетчерам. | |
| void | unbind_agents_to_disp (agent_array_t::iterator it) |
| Отвязать агентов от диспетчеров. Подробнее... | |
| void | agent_finished () |
| Отметить, что очередной агент кооперации, завершил работу. Подробнее... | |
| void | final_deregister_coop () |
| Выполнить окончательную дерегистрацию кооперации. | |
Закрытые данные | |
| const std::string | m_coop_name |
| Имя кооперации. | |
| ACE_Thread_Mutex & | m_lock |
| Мутекс для синхронизации операций над кооперацией. | |
| bool | m_agents_are_undefined |
| Флаг того, что агенты кооперации разопределены. | |
| disp_binder_ref_t | m_coop_disp_binder |
| Привязка к диспетчеру для агентов коопераций по-умолчанию. | |
| agent_array_t | m_agent_array |
| Массив агентов кооперации. | |
| impl::so_environment_impl_t & | m_so_environment_impl |
| Реализация среды so_5. | |
| atomic_counter_t | m_working_agents_count |
| Количество работающих агентов. | |
Друзья | |
| class | agent_t |
| class | impl::agent_core_t |
Кооперация агентов.
Служит для объединения несольких агентов, как одной рабочей единицы SObjectizer. При регистрации кооперации все агенты должны быть зарегистрированы, иначе регистрация кооперации не состоиться. Агенты добавляются в кооперацию через метод кооперации add_agent(). При добавлении агента в кооперацию ей передается владение этим агентом.
|
private |
Конструктор кооперации.
| name | Имя кооперации. |
| coop_disp_binder | Привязка к диспетчеру для агентов коопераций по-умолчанию. |
| env_impl | Реализация среды so_5. |
Используется в create_coop().
| ret_code_t so_5::rt::agent_coop_t::add_agent | ( | const agent_ref_t & | agent_ref | ) |
Добавить агента в кооперацию, владение агентом переходит к gent_coop_t.
| agent_ref | Агент. |
Перекрестные ссылки m_agent_array и m_coop_disp_binder.
| ret_code_t so_5::rt::agent_coop_t::add_agent | ( | const agent_ref_t & | agent_ref, |
| disp_binder_unique_ptr_t | disp_binder | ||
| ) |
Добавить агента в кооперацию с указанием привязки к конкретному дисптчеру, владение агентом переходит к agent_coop_t.
Если агент, добавляемый в кооперацию, должен иметь привязку к диспетчеру отличную от привязки всей кооперации, то используется этот метод, параметр disp_binder которого определяет специфичного для данного агента привязывателя.
| agent_ref | Агент. |
| disp_binder | Объект для привязки к диспетчеру. |
Перекрестные ссылки m_agent_array и so_5::rc_coop_has_references_to_null_agents_or_binders.
|
private |
Отметить, что очередной агент кооперации, завершил работу.
После дерегистрации кооперации, ее агенты, продолжают обрабатывать события, которые успели встать в очередь до факта дерегистрации, а когда агент видит, что все события, которые ему надо было обработать - обработаны, агент говорит собственной кооперации, что он закончил. Когда все агенты кооперации завершают свою работу, кооперацию можно уничтожать.
Перекрестные ссылки m_so_environment_impl, m_working_agents_count и so_5::rt::impl::so_environment_impl_t::ready_to_deregister_notify().
|
static |
Создание кооперации.
| name | Имя кооперации. |
| coop_disp_binder | Привязка к диспетчеру для агентов коопераций по-умолчанию. |
| env_impl | Реализация среды so_5 в рамках которой создается кооперация. |
Перекрестные ссылки agent_coop_t().
Используется в so_5::rt::so_environment_t::create_coop().
|
inlineprivate |
Отвязать агентов от диспетчеров.
| it | Итератор на агента всех предшественников которого надо отвязать от лиспетчеров. |
Перекрестные ссылки m_agent_array и m_so_environment_impl.
Используется в bind_agents_to_disp() и final_deregister_coop().
|
private |
Вызвать у агентов undefine_agent().
| it | Итератор на агента у всех предшественников которого надо вызывать undefine_agent(). |
Перекрестные ссылки m_agent_array, m_agents_are_undefined и m_lock.
Используется в define_all_agents() и undefine_all_agents().
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:22. Создано системой
1.8.3.1
|
|