Класс, который пытается регистрировать кооперацию, и если это не удается, удаляет кооперацию в своем деструкторе.
Динамическая кооперация автоматически уничтожается SObjectizer-ом только если она была успешно зарегистрирована. Если же register_coop завершился неудачно, то отвественность за уничтожение динамической кооперации лежит на прикладном программисте. Т.е., при работе с dyn_agent_coop_t необходимо контролировать код возврата register_coop, и если он свидетельствует об ошибке -- уничтожать объект dyn_agent_coop_t.
Все эти действия берет на себя класс dyn_agent_coop_helper_t. Если кооперацию не удалось зарегистрировать, то объект dyn_agent_coop_t будет уничтожен в деструкторе dyn_agent_coop_helper_t.
Пример:
// Создаем динамическую кооперацию из одного агента. dyn_agent_coop_helper_t helper( new dyn_agent_coop_t( new some_agent_t( "a_some_agent" ) ) ); if( !helper.result() ) // Кооперация успешно зарегистрирована. ... else // Кооперация не зарегистрирована. // Объекты dyn_agent_coop_t и some_agent_t // будут уничтожены в деструкторе helper. ...
sample/dyn_reg/main.cpp, sample/filter/c1.cpp, sample/filter/c2.cpp, sample/parent_insend/main.cpp, sample/qt_ring/main.cpp и sample/subscr_hook/main.cpp.
Открытые члены | |
dyn_agent_coop_helper_t (dyn_agent_coop_t *coop) | |
Конструктор осуществляет попытку регистрации агента. | |
const ret_code_t & | result () const |
Результат попытки регистрации. | |
Закрытые данные | |
dyn_agent_coop_t * | m_coop |
ret_code_t | m_rc |
so_4::rt::dyn_agent_coop_helper_t::dyn_agent_coop_helper_t | ( | dyn_agent_coop_t * | coop | ) |
Конструктор осуществляет попытку регистрации агента.
coop | Указатель на динамически-созданный объект. |
Перекрестные ссылки so_4::api::register_coop().
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |