Класс so_4::rt::impl::sys_dict_t

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

so_4::rt::impl::std_sys_dict_t

Полный список членов класса


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

Словарь системы.

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

virtual ret_code_t add_class (class_handler_impl_t &handler)=0
virtual ret_code_t remove_class (class_handler_impl_t &handler)=0
virtual ret_code_t find_agent_class (const std::string &class_name, class_handler_impl_t *&agent_class) const =0
virtual ret_code_t do_registration (agent_coop_t &coop, agent_wrapper_ptr_vector_t &agents)=0
virtual ret_code_t do_deregistration (const std::string &coop_name, agent_name_list_t &agent_names)=0
 Выполнение дерегистрации кооперации.
virtual ret_code_t make_global (const cpp_util_2::string_piece_t agent, const std::string &agent_type)=0
virtual size_t check_dereg (coop_map_t &dereg_coops)=0
virtual agent_wrapper_t * find_agent (const cpp_util_2::string_piece_t agent_name)=0
virtual const agent_wrapper_t * find_agent (const cpp_util_2::string_piece_t agent_name) const =0
virtual void cleanup (coop_vector_t &coops)=0

Открытые статические члены

static void destroy_coops (const coop_vector_t &coops)
 Попытка уничтожения коопераций в указанном векторе.

Методы

virtual ret_code_t so_4::rt::impl::sys_dict_t::do_deregistration ( const std::string &  coop_name,
agent_name_list_t agent_names 
) [pure virtual]

Выполнение дерегистрации кооперации.

В аргумент agent_names помещаются имена агентов, которые попали под дерегистрацию (как в самой кооперации, так и в дочерних ей кооперациях).

Возвращает:
0, если кооперация успешно дерегистрирована.

Замещается в so_4::rt::impl::std_sys_dict_t.

virtual void so_4::rt::impl::sys_dict_t::cleanup ( coop_vector_t coops  )  [pure virtual]

Полная очистка словаря при завершении работы системы. В coops возвращаются все кооперации для которых:

  • у всех зарегистрированных на данный момент агентов (а так же ожидащих дерегистрации) нужно вызывать метод agent_t::so_on_deregistration().
  • агенты, которые были созданны динамически (регистрировались через dyn_agent_coop_t), должны быть уничтожены физически не смотря на количество ссылок.

Сообщений о дерегистрации коопераций не рассылается, т.к. к этому моменту диспетчер уже не работает. Для выполнения всех этих действий нужно воспользоваться методом destroy_coops().

Необходимость в двух методах cleanup() и destroy_coops() для очистки словаря возникла из-за того, что саму очистку словаря нужно осуществлять при заблокированном ядре. А вызывать метод agent_t::so_on_deregistration() необходимо при незаблокированном ядре.

v.4.2.7
В возвращенном списке порядок следования элементов соответствует тому порядку, в котором коопераци должны уничтожаться.

Замещается в so_4::rt::impl::std_sys_dict_t.

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


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