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

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

#ifndef __dmpserviceregistry_h__
#define __dmpserviceregistry_h__

#include <iostream>
#include <string>
#include <map>
#include <memory>
 
#include "dmpservicenativeloader.h"


class DmpService;
class SERVER_EXPORT DmpServiceRegistry
{

  public:

    DmpServiceRegistry() = default;

    ~DmpServiceRegistry();

    void RegisterService(std::shared_ptr<DmpService> service);

    int UnregisterService(const std::string &name, const std::string &version = std::string());

    std::shared_ptr<DmpService> GetService(const std::string &name, const std::string &version);

    void Init( const boost::filesystem::path &module_path);

    void CleanUp();

   private:
     typedef std::map<std::string, std::shared_ptr<DmpService> > ServiceMap;
     typedef std::map<std::string, std::pair<std::string, std::string> > VersionMap;

     DmpServiceNativeLoader nativeLoader_;
     ServiceMap services_;
     VersionMap serviceVersions_;

};


#endif // __dmpserviceregistry_h__