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 |