Класс 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, sample/filter/c2.cpp, sample/filter/server.cpp, sample/parent_insend/main.cpp, sample/raw_channel/tcp_cln.cpp, sample/raw_channel/tcp_srv.cpp и sample/subscr_hook/main.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.
std::auto_ptr
< impl::dyn_coop_controlled_obj_storage_t
m_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::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.

Перекрестные ссылки so_4::rt::impl::phys_coop_destroyer_t::add(), agents_to_phys_coop_destroyer() и so_4::rt::agent_coop_t::deregistered().

Используется в so_4::disp::qt_ui::dyn_coop_t::deregistered().

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

Добавить в кооперацию объект, который должен быть удален вместе с кооперацией.

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

Перекрестные ссылки m_controlled_obj_storage.

Используется в so_4::rt::dyn_coop_controlled().

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 попытается уничтожить эти агенты самостоятельно.

Перекрестные ссылки m_is_agents_in_destroyer.

Используется в agents_to_phys_coop_destroyer() и so_4::disp::qt_ui::dyn_coop_t::deregistered().


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

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

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

Используется в agents_delivered_to_destroyer().

Хранилище указателей на контролируемые кооперацией объекты.

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

Используется в add_controlled_obj().


Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo