// // Пример DLL. // // Псевдоним: sample_dll1. // // Содержит обработчики для кооперации: coop_1, coop_2, coop_3. // При попытке зарегистрировать какую-нибудь из них возвращается // ошибка "not_implemented". // // Содержит фабрики кооперации: factory_1, factory_2. // При попытке использовать какую-нибудь из них возвращается // ошибка "not_implemented". // #include <so_sysconf_2/h/coop_handler.hpp> #include <so_sysconf_2/h/coop_factory.hpp> namespace sample_dll1 { // Обработчик кооперации. 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_dll1", 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" ); // Фабрика коопераций. class test_factory_t : public so_sysconf_2::coop_factory_t { typedef so_sysconf_2::coop_factory_t base_type_t; public : test_factory_t( // Имя фабрики. const std::string & factory_name ) : base_type_t( // Псевдоним DLL. // Одинаковый для всех коопераций в данной DLL. "sample_dll1", factory_name ) {} virtual ~test_factory_t() {} virtual bool reg( const std::string & coop_name, const std::string & cfg_file, std::string & error_msg ) { // Реальной кооперации не создается // поэтому сразу возвращаем описание ошибки. error_msg = "not implemented"; return false; } }; // // Фабрики, которые должны существовать в этой DLL. // test_factory_t g_factory_1( "factory_1" ); test_factory_t g_factory_2( "factory_2" ); } /* namespace sample_dll1 */
Документация по so_sysconf_2 v.2.4.0. Последние изменения: Wed Oct 31 18:55:07 2007. Создано системой 1.5.4 |