sample/dll1/sample_dll.cpp

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

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