dmpservicenativeloader.h 1.3 KB
/**************************************************************************
* file:              dmpservicenativeloader.h

* Author:            wanzhongping
* Date:              2020-12-31 17:10:36
* Email:             zhongpingw@chinadci.com
* copyright:         广州城市信息研究所有限公司
***************************************************************************/

#ifndef __dmpservicenativeloader_h__
#define __dmpservicenativeloader_h__

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <memory>
#include <boost/function.hpp>
#include <boost/filesystem.hpp>
#include "dmap_server.h"

class DmpServiceModule;
class DmpServiceRegistry;
class DmpServiceNativeModuleEntry;

class SERVER_EXPORT DmpServiceNativeLoader
{                   
  public:
    DmpServiceNativeLoader() = default;
    void LoadModules(const boost::filesystem::path &module_path, DmpServiceRegistry &registrar);
    void UnloadModules();
    std::shared_ptr<DmpServiceModule> LoadNativeModule( const std::string &location );

  private:
    typedef std::map<std::string, std::shared_ptr<DmpServiceModule>> ModuleMap;
    std::shared_ptr<DmpServiceModule> FindModule(const std::string &location);
    ModuleMap modules_;
};

#endif // __dmpservicenativeloader_h__