Класс so_4::rt::dyn_agent_coop_t

Граф наследования:so_4::rt::dyn_agent_coop_t:

so_4::rt::agent_coop_t so_4::disp::qt_ui::dyn_coop_t Полный список членов класса

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

Динамическая кооперация.

Класс для кооперации и агентов создающихся динамически. Объект кооперация создается оператором new и содержит агентов, созданных оператором new.

При дерегистрации объект кооперации и все агенты будут уничтожены посредством оператора delete.

Важно:
сначала уничтожаются агенты, входящие в кооперацию, и только затем уничтожается объект-кооперация. dyn_agent_data.
Примеры:

sample/destroyable_traits/main.cpp, sample/dyn_coop_controlled/main.cpp, sample/dyn_reg/main.cpp и sample/filter/c1.cpp.


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

 dyn_agent_coop_t (agent_t *agent)
 Конструктор для кооперации из одного агента.
 dyn_agent_coop_t (const char *coop_name, agent_t **coop_agents, size_t agent_count)
 Конструктор для кооперации из нескольких агентов.
 dyn_agent_coop_t (const std::string &coop_name, agent_t **coop_agents, size_t agent_count)
 Конструктор для кооперации из нескольких агентов.
virtual void deregistered (so_4::rt::impl::phys_coop_destroyer_t &dstr)
 Внутренний метод SObjectizer-a.
void add_controlled_obj (dyn_coop_controlled_obj_t *obj)
 удален вместе с кооперацией.

Защищенные члены

void agents_delivered_to_destroyer ()
 Указание того, что все агенты кооперации были переданы в объект phys_coop_destroyer.

Закрытые члены

void agents_to_phys_coop_destroyer (so_4::rt::impl::phys_coop_destroyer_t &dstr)
 Внутренний метод SObjectizer-a.

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

bool m_is_agents_in_destroyer
 Внутренний атрибут SObjectizer-a.
auto_ptr_3::obj_ptr_t< impl::dyn_coop_controlled_obj_storage_tm_controlled_obj_storage
 объекты.


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

so_4::rt::dyn_agent_coop_t::dyn_agent_coop_t agent_t agent  ) 
 

Конструктор для кооперации из одного агента.

В качестве имени кооперации используется имя агента.

Для создания кооперации с одним агентом, но с именем, отличающимся от имени агента необходимо воспользоваться вторым конструктором.

Аргументы:
agent  Единственный входящий в кооперацию агент.
Внимание:
объект должн быть создан оператором new.

so_4::rt::dyn_agent_coop_t::dyn_agent_coop_t const char *  coop_name,
agent_t **  coop_agents,
size_t  agent_count
 

Конструктор для кооперации из нескольких агентов.

Аргументы:
coop_name  Имя кооперации.
coop_agents  Указатели на агентов кооперации. Каждый элемент должен содержать корректный указатель на объект, созданный оператором new.

После завершения работы конструктора сам вектор может быть уничтожен, но все агенты должны существовать дольше, чем объект agent_coop_t.

agent_count  Количество элементов в coop_agents.

so_4::rt::dyn_agent_coop_t::dyn_agent_coop_t const std::string &  coop_name,
agent_t **  coop_agents,
size_t  agent_count
[explicit]
 

Конструктор для кооперации из нескольких агентов.

Начиная с:
v.4.2.6
Аргументы:
coop_name  Имя кооперации.
coop_agents  Указатели на агентов кооперации. Каждый элемент должен содержать корректный указатель на объект, созданный оператором new.

После завершения работы конструктора сам вектор может быть уничтожен, но все агенты должны существовать дольше, чем объект agent_coop_t.

agent_count  Количество элементов в coop_agents.


Методы

void so_4::rt::dyn_agent_coop_t::add_controlled_obj dyn_coop_controlled_obj_t obj  ) 
 

удален вместе с кооперацией.

Начиная с:
v.4.2.6
Аргументы:
obj  Указатель на динамически созданный объект.

void so_4::rt::dyn_agent_coop_t::agents_delivered_to_destroyer  )  [protected]
 

Указание того, что все агенты кооперации были переданы в объект phys_coop_destroyer.

Начиная с:
v.4.2.7
Производные от dyn_agent_coop_t классы, которые перекрывают метод deregistered(), должны вызывать этот метод, чтобы указать, что они взяли на себя ответственность за уничтожение агентов кооперации. Если этого не сделать, то деструктор dyn_agent_coop_t попытается уничтожить эти агенты самостоятельно.

void so_4::rt::dyn_agent_coop_t::deregistered so_4::rt::impl::phys_coop_destroyer_t dstr  )  [virtual]
 

Внутренний метод SObjectizer-a.

Информирование кооперации о том, что она была дерегистрирована.

Данная реализация вызывает у всех агентов метод so_handle_deregistration. После чего заносит в объект dstr указатели на сам объект-кооперацию и на все агенты, входящие в кооперацию.

Переопределяет метод предка so_4::rt::agent_coop_t.

Переопределяется в so_4::disp::qt_ui::dyn_coop_t.


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

auto_ptr_3::obj_ptr_t< impl::dyn_coop_controlled_obj_storage_t > so_4::rt::dyn_agent_coop_t::m_controlled_obj_storage [private]
 

объекты.

Начиная с:
v.4.2.6

bool so_4::rt::dyn_agent_coop_t::m_is_agents_in_destroyer [private]
 

Внутренний атрибут SObjectizer-a.

Признак того, что указатели на агентов были переданы в phys_coop_destroyer, т.е. что агенты были уничтожены. Если этот признак не установлен, то агентов нужно уничтожать в деструкторе нашего объекта.


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