Класс so_4::rt::agent_coop_t

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

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

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

Базовый класс кооперации агентов.

Класс agent_coop_t так же реализует статическую кооперацию статических агентов. Т.е. за уничтожение объекта agent_coop_t и за уничтожение всех агентов входящих в кооперацию отвечает прикладной программист.

Примеры:

sample/chstate/main.cpp, sample/dyn_reg/main.cpp, sample/hello_all/main.cpp, sample/hello_delay/main.cpp, sample/hello_periodic/main.cpp, sample/hello_world/main.cpp, sample/high_traffic/client.cpp, sample/high_traffic/server.cpp, sample/inheritance/main.cpp, sample/parent_insend/main.cpp, sample/raw_channel/tcp_cln.cpp, sample/raw_channel/tcp_srv.cpp и sample/subscr_hook/main.cpp.


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

 agent_coop_t (agent_t &agent)
 Конструктор для кооперации из одного агента.
 agent_coop_t (const char *coop_name, agent_t **coop_agents, size_t agent_count)
 Конструктор для кооперации из нескольких агентов.
 agent_coop_t (const std::string &coop_name, agent_t **coop_agents, size_t agent_count)
 Конструктор для кооперации из нескольких агентов.
const std::string & query_name () const
 Имя кооперации.
size_t size () const
 Количество агентов в кооперации.
agent_tquery_agent (size_t i) const
 Доступ к агенту по индексу.
void add (subscr_hook_t *hook)
 Добавить еще один hook подписки.
virtual void deregistered (so_4::rt::impl::phys_coop_destroyer_t &dstr)
 Внутренний метод SObjectizer-a.
void init_traits ()
 Внутренний метод SObjectizer-a.
void call_subscr_hook () const
 Вызвать метод subscr_hook_thook() у всех hook-ов подписки.
so_4::rt::impl::coop_relation::storage_trelation ()
 Доступ к информации об взаимосвязях между кооперациями.
const so_4::rt::impl::coop_relation::storage_trelation () const
 Доступ к информации об взаимосвязях между кооперациями.
void set_parent_coop_name (const std::string &coop_name)
 Назначить имя родительской кооперации.

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

void populate_coop_storage (agent_t **agents, size_t agent_count)
 членов кооперации.
 agent_coop_t (const agent_coop_t &)
 Защита от копирования.
agent_coop_toperator= (const agent_coop_t &)
 Защита от копирования.

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

auto_ptr_3::obj_ptr_t< impl::agent_coop_storage_tm_storage
 Реальный объект-кооперация.
auto_ptr_3::obj_ptr_t< impl::subscr_hook_storage_tm_subscr_hook_storage
 Хранилище объектов subscr_hook_t.


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

so_4::rt::agent_coop_t::agent_coop_t agent_t agent  ) 
 

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

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

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

Аргументы:
agent  Единственный входящий в кооперацию агент.

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

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

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

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

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

so_4::rt::agent_coop_t::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  Указатели на агентов кооперации. Каждый элемент должен содержать корректный указатель.

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

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


Методы

void so_4::rt::agent_coop_t::add subscr_hook_t hook  ) 
 

Добавить еще один hook подписки.

Начиная с:
v.4.2.6
Добавляемый hook должен быть динамически созданным объектом, который будет автоматически уничтожен в деструкторе.

Добавленый hook живет в объекте кооперации все время, пока существует кооперация. Т.е. если кооперация регистрируется и дерегистрируется несколько раз, то после каждой регистрации все ранее добавленные hook-и срабатывают при подписке агентов.

void so_4::rt::agent_coop_t::call_subscr_hook  )  const
 

Вызвать метод subscr_hook_thook() у всех hook-ов подписки.

Начиная с:
v.4.2.6
Внутренний метод SObjectizer-а.
Вызывается перед выполнением подписки агентов кооперации. Метод subscr_hook_t::hook() должен быть вызван у каждого добавленного в кооперацию hook-а подписки.

void so_4::rt::agent_coop_t::populate_coop_storage agent_t **  agents,
size_t  agent_count
[private]
 

членов кооперации.

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

agent_t & so_4::rt::agent_coop_t::query_agent size_t  i  )  const
 

Доступ к агенту по индексу.

Внимание:
Результат доступа по недействительному индексу не определен.

const so_4::rt::impl::coop_relation::storage_t & so_4::rt::agent_coop_t::relation  )  const
 

Доступ к информации об взаимосвязях между кооперациями.

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

so_4::rt::impl::coop_relation::storage_t & so_4::rt::agent_coop_t::relation  ) 
 

Доступ к информации об взаимосвязях между кооперациями.

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

void so_4::rt::agent_coop_t::set_parent_coop_name const std::string &  coop_name  ) 
 

Назначить имя родительской кооперации.

Начиная с:
v.4.2.7
Если кооперация создается как дочерняя другой кооперации, то до регистрации необходимо назначить имя родительской кооперации.

Указанная родительская кооперация должна быть зарегистрирована на момент регистрации данной кооперации.

Примеры:
sample/parent_insend/main.cpp.


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

auto_ptr_3::obj_ptr_t< impl::subscr_hook_storage_t > so_4::rt::agent_coop_t::m_subscr_hook_storage [private]
 

Хранилище объектов subscr_hook_t.

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


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