Открытые члены | |
virtual ret_code_t | add_class (class_handler_impl_t &handler) |
Добавление описания класса в состав системы. | |
virtual ret_code_t | remove_class (class_handler_impl_t &handler) |
Изъятие описания класса из состава системы. | |
virtual ret_code_t | find_agent_class (const std::string &class_name, class_handler_impl_t *&agent_class) const |
Поиск описания типа агента по имени типа. | |
virtual ret_code_t | do_registration (agent_coop_t &coop, agent_wrapper_ptr_vector_t &agents) |
virtual ret_code_t | do_deregistration (const std::string &coop_name, agent_name_list_t &agent_names) |
Выполнение дерегистрации кооперации. | |
virtual ret_code_t | make_global (const cpp_util_2::string_piece_t agent, const std::string &agent_type) |
virtual size_t | check_dereg (coop_map_t &dereg_coops) |
Сборка мусора. | |
virtual agent_wrapper_t * | find_agent (const cpp_util_2::string_piece_t agent_name) |
Поиск агента по имени. | |
virtual const agent_wrapper_t * | find_agent (const cpp_util_2::string_piece_t agent_name) const |
virtual void | cleanup (coop_vector_t &coops) |
Защищенные типы | |
typedef ACE_Hash_Map_Manager_Ex < cpp_util_2::string_piece_t, agent_wrapper_t *, ACE_Hash < cpp_util_2::string_piece_t > , ACE_Equal_To < cpp_util_2::string_piece_t > , ACE_Null_Mutex > | agent_map_t |
Защищенные члены | |
ret_code_t | check_parent_coop (const agent_coop_t &coop, agent_coop_t *&parent_coop) |
Проверка корректности родительской кооперации. | |
ret_code_t | is_coop_name_can_be_used (const agent_coop_t &coop) const |
ret_code_t | is_agents_names_can_be_used (const agent_coop_t &coop) const |
ret_code_t | try_create_agents_wrappers (agent_coop_t &coop, agent_wrapper_ptr_vector_t &created_wrappers) |
void | deregister_coop (agent_coop_t &coop, agent_name_list_t &agent_names) |
void | deregister_agent (agent_wrapper_t &agent) |
Дерегистрация одного агента. | |
bool | check_dereg_coop (const agent_coop_t &coops) |
Попытка дерегистрировать содержимое кооперации. | |
ret_code_t | find_coop (const std::string &coop_name, const agent_coop_t *&coop) const |
Поиск кооперации среди существующих коопераций. | |
ret_code_t | check_agents_classes (const agent_coop_t &coop) |
Проверка наличия описанных классов для агентов. | |
ret_code_t | create_agents_wrappers (const agent_coop_t &coop, agent_map_t &result_map) |
Создание инфраструктуры для всех входящих в кооперацию агентов. | |
ret_code_t | create_agent_wrapper (const std::string &name, const std::string &type_name, agent_wrapper_t *&wrapper, agent_t *agent) |
Создание инфраструктуры для агента. | |
ret_code_t | create_global_agent_wrapper (const cpp_util_2::string_piece_t name, const std::string &type_name, agent_wrapper_t *&wrapper) |
Создание инфраструктуры для глобального агента. | |
Защищенные статические члены | |
static void | destroy_coop (const coop_map_t::value_type &v) |
Удаление одной кооперации. | |
Закрытые данные | |
class_map_t | m_classes |
Словарь загеристрированных классов. | |
std::auto_ptr < class_relation_handler_t > | m_class_relation |
Обработчик взаимоотношений между классами. | |
coop_map_t | m_coops |
Существующие кооперации. | |
coop_map_t | m_dereg_coops |
Дерегистрируемые в данный момент кооперации. | |
std::auto_ptr< agent_map_t > | m_agents |
Существующие агенты. | |
std::auto_ptr< agent_map_t > | m_dereg_agents |
Дерегистрируемые в данный момент агенты. |
ret_code_t so_4::rt::impl::std_sys_dict_t::add_class | ( | class_handler_impl_t & | handler | ) | [virtual] |
Добавление описания класса в состав системы.
Класс добавляется, только если его имя уникально.
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки m_class_relation, m_classes, so_4::rt::impl::class_handler_impl_t::query_class_name(), so_4::rc_invalid_name и SO_4_ERROR_RETURN.
ret_code_t so_4::rt::impl::std_sys_dict_t::do_registration | ( | agent_coop_t & | coop, | |
agent_wrapper_ptr_vector_t & | agents | |||
) | [virtual] |
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки check_parent_coop(), so_4::rt::impl::coop_relation::storage_t::parent_bind() и so_4::rt::agent_coop_t::relation().
ret_code_t so_4::rt::impl::std_sys_dict_t::do_deregistration | ( | const std::string & | coop_name, | |
agent_name_list_t & | agent_names | |||
) | [virtual] |
Выполнение дерегистрации кооперации.
В аргумент agent_names помещаются имена агентов, которые попали под дерегистрацию (как в самой кооперации, так и в дочерних ей кооперациях).
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки so_4::rt::impl::coop_relation::storage_t::child_query_all(), so_4::rt::impl::coop_ptr_to_coop_name(), find_coop() и so_4::rt::agent_coop_t::relation().
ret_code_t so_4::rt::impl::std_sys_dict_t::make_global | ( | const cpp_util_2::string_piece_t | agent, | |
const std::string & | agent_type | |||
) | [virtual] |
Сделать агент глобальным. Если такого агента еще нет, то создается wrapper без реального агента.
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки create_global_agent_wrapper(), find_agent(), m_agents, m_dereg_agents, so_4::rc_invalid_object, so_4::ace::rehash_hash_map(), SO_4_ABORT_ON_ACE_ERROR и SO_4_ERROR_RETURN.
size_t so_4::rt::impl::std_sys_dict_t::check_dereg | ( | coop_map_t & | dereg_coops | ) | [virtual] |
Сборка мусора.
Окончательная дерегистрация коопераций и агентов.
Возвращается количество еще не дерегистрированных коопераций.
В dereg_coops помещаются окончательно дерегистрированные кооперации
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки check_dereg_coop() и m_dereg_coops.
agent_wrapper_t * so_4::rt::impl::std_sys_dict_t::find_agent | ( | const cpp_util_2::string_piece_t | agent_name | ) | [virtual] |
Поиск агента по имени.
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки m_agents.
Используется в make_global().
void so_4::rt::impl::std_sys_dict_t::cleanup | ( | coop_vector_t & | coops | ) | [virtual] |
Полная очистка словаря при завершении работы системы. В coops возвращаются все кооперации для которых:
Сообщений о дерегистрации коопераций не рассылается, т.к. к этому моменту диспетчер уже не работает. Для выполнения всех этих действий нужно воспользоваться методом destroy_coops().
Необходимость в двух методах cleanup() и destroy_coops() для очистки словаря возникла из-за того, что саму очистку словаря нужно осуществлять при заблокированном ядре. А вызывать метод agent_t::so_on_deregistration() необходимо при незаблокированном ядре.
Замещает so_4::rt::impl::sys_dict_t.
Перекрестные ссылки so_4::rt::impl::clean_hash_map(), so_4::rt::impl::coop_map_to_vector(), m_agents, m_coops, m_dereg_agents, m_dereg_coops и so_4::rt::impl::make_cleanup_vector().
ret_code_t so_4::rt::impl::std_sys_dict_t::check_parent_coop | ( | const agent_coop_t & | coop, | |
agent_coop_t *& | parent_coop | |||
) | [protected] |
Проверка корректности родительской кооперации.
coop | Регистрируемая кооперация у которой нужно брать имя родительской кооперации. |
parent_coop | Приемник указателя на родительскую кооперацию. Остается неизменным, если родительской кооперации нет. |
Перекрестные ссылки m_coops, so_4::rt::impl::coop_relation::storage_t::parent_coop_name(), so_4::rt::agent_coop_t::query_name(), so_4::rc_not_found, so_4::rt::agent_coop_t::relation() и SO_4_ERROR_RETURN.
Используется в do_registration().
bool so_4::rt::impl::std_sys_dict_t::check_dereg_coop | ( | const agent_coop_t & | coops | ) | [protected] |
Попытка дерегистрировать содержимое кооперации.
Возвращает true, если содержимое кооперации полностью дерегистрировано.
Перекрестные ссылки so_4::rt::impl::coop_relation::storage_t::child_count(), m_dereg_agents, so_4::rt::agent_coop_t::query_agent(), so_4::rt::agent_coop_t::relation(), so_4::rt::agent_coop_t::size(), SO_4_ABORT_ON_ACE_ERROR и so_4::rt::agent_t::so_query_name().
Используется в check_dereg().
std::auto_ptr< class_relation_handler_t > so_4::rt::impl::std_sys_dict_t::m_class_relation [private] |
Обработчик взаимоотношений между классами.
Используется в add_class(), check_agents_classes(), create_global_agent_wrapper() и remove_class().
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:50 2008. Создано системой 1.5.6 |