sample/dll2/sample_dll.cpp

Пример DLL для работы с SO SysConf 2. Предназначен для использования в примере sample/app/main.cpp.

//
// Пример 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. Создано системой  doxygen1.5.4 Intervale SourceForge.net Logo