// // Пример DLL. // // Псевдоним: sample_dll2. // // Содержит обработчики для коопераций: coop_1, coop_2, coop_3, // coop_4, coop_5. // При попытке зарегистрировать какую-нибудь из них возвращается // ошибка "not_implemented". // // В данной DLL имена трех коопераций совпадают с именами // коопераций в sample_dll1. Этр специально сделоно дяя того, // чтобы показать важность уникальности имен коопераций для // SO SysConf 2. // // Если sample_dll1 будет загружена в SO SysConf 2 перед // sample_dll2, то из sample_dll2 будут доступны только // кооперации coop_4 и coop_5. Если же sample_dll2 будет // загружена перед sample_dll1, то из sample_dll1 не будет // доступно ни одной кооперации. // #include <so_sysconf_2/h/coop_handler.hpp> namespace sample_dll2 { // Обработчик кооперации. class test_handler_t : public so_sysconf_2::coop_handler_t { typedef so_sysconf_2::coop_handler_t base_type_t; public : test_handler_t( // Имя кооперации. const char * coop_name ); virtual ~test_handler_t(); virtual bool reg( const std::string & cfg_file, std::string & error_msg ) { // Реальной кооперации не создается // поэтому сразу возвращаем описание ошибки. error_msg = "not implemented"; return false; } virtual void dereg() { // Поскольку кооперация не регистрировалась, // то и дерегистрировать ничего не нужно. } }; test_handler_t::test_handler_t( const char * coop_name ) : base_type_t( // Псевдоним DLL. // Одинаковый для всех коопераций в данной DLL. "sample_dll2", coop_name ) { } test_handler_t::~test_handler_t() { } // // Кооперации, которые должны существовать в этой DLL. // test_handler_t g_coop_1( "coop_1" ); test_handler_t g_coop_2( "coop_2" ); test_handler_t g_coop_3( "coop_3" ); test_handler_t g_coop_4( "coop_4" ); test_handler_t g_coop_5( "coop_5" ); } /* namespace sample_dll2 */
Документация по so_sysconf_2 v.2.4.0. Последние изменения: Wed Oct 31 18:55:07 2007. Создано системой 1.5.4 |