Класс 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/qt_ring/main.cpp, sample/qt_ui/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_t
relation () 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 &)
 Защита от копирования.

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

std::auto_ptr
< impl::agent_coop_storage_t
m_storage
 Реальный объект-кооперация.
std::auto_ptr
< impl::subscr_hook_storage_t
m_subscr_hook_storage
 Хранилище объектов subscr_hook_t.

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

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

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

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

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

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

Перекрестные ссылки m_storage и so_4::rt::agent_t::so_set_coop().

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.

Перекрестные ссылки m_storage и populate_coop_storage().

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.

Перекрестные ссылки m_storage и populate_coop_storage().


Методы

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

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

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

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

Используется в so_4::rt::dyn_agent_coop_t::agents_to_phys_coop_destroyer(), so_4::rt::impl::std_sys_dict_t::check_agents_classes(), so_4::rt::impl::std_sys_dict_t::check_dereg_coop(), so_4::rt::impl::std_sys_dict_t::create_agents_wrappers(), deregistered(), so_4::disp::qt_ui::dyn_coop_t::deregistered() и init_traits().

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

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

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

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

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

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

Информирование кооперации о том, что она была дерегистрирована. Данная реализация вызывает у всех агентов метод so_handle_deregistration. После чего вызывается деинициализация свойств агентов.

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

Перекрестные ссылки so_4::rt::impl::agent_traits_storage_t::begin(), so_4::rt::impl::agent_traits_storage_t::end(), m_storage, query_agent(), size(), so_4::rt::agent_t::so_handle_deregistration(), so_4::rt::agent_t::so_query_traits(), so_4::rt::agent_t::so_set_coop() и so_4::rt::agent_t::so_set_dispatcher_binding().

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

void so_4::rt::agent_coop_t::init_traits (  ) 

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

Инициализация свойств агентов.

Перекрестные ссылки so_4::rt::impl::agent_traits_storage_t::begin(), so_4::rt::impl::agent_traits_storage_t::end(), query_agent(), size() и so_4::rt::agent_t::so_query_traits().

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-а подписки.

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

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

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

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

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

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

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.

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

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

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

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

Перекрестные ссылки so_4::rt::impl::agent_coop_storage_t::add_agent() и m_storage.

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


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

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

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

Используется в add() и call_subscr_hook().


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