提交 97f52c9424bc7a76aa1bda9562b8c4f0c9f4691b

作者 LJH 李佳桓
1 个父辈 a61821ed

add

正在显示 1 个修改的文件 包含 71 行增加0 行删除
  1 +/**************************************************************************
  2 +* file: dmpserverplugins.cpp
  3 +
  4 +* Author: wanzhongping
  5 +* Date: 2021-03-12 17:01:24
  6 +* Email: zhongpingw@chinadci.com
  7 +* copyright: 广州城市信息研究所有限公司
  8 +***************************************************************************/
  9 +
  10 +#include "dmpserverplugins.h"
  11 +#include <boost/dll/import.hpp>
  12 +#include "dmpapplication.h"
  13 +#include <dlfcn.h>
  14 +#include <boost/format.hpp>
  15 +#include <boost/make_shared.hpp>
  16 +#include "dmplogger.h"
  17 +
  18 +std::shared_ptr<DmpPythonUtils> DmpServerPlugins::sp_python_utils_ = std::make_shared<DmpPythonUtils>();
  19 +
  20 +std::vector<std::string> &DmpServerPlugins::ServerPlugins()
  21 +{
  22 + static std::vector<std::string> pluginList;
  23 + return pluginList;
  24 +}
  25 +
  26 +bool DmpServerPlugins::InitPlugins(DmpServerInterface *interface)
  27 +{
  28 + sp_python_utils_->InitServerPython(interface);
  29 + if (sp_python_utils_->IsEnabled())
  30 + {
  31 + LOGGER_INFO("Python support ENABLED :-)");
  32 + }
  33 + else
  34 + {
  35 + LOGGER_WARN("Python support FAILED :-(");
  36 + return false;
  37 + }
  38 +
  39 + //Init plugins: loads a list of installed plugins and filter them
  40 + //for "server" metadata
  41 + bool at_least_one_enabled = false;
  42 + std::vector<std::string> vec_plugins = sp_python_utils_->PluginList();
  43 + std::vector<std::string>::iterator iter_plugin_name;
  44 + std::string comma = ",";
  45 + for (iter_plugin_name = vec_plugins.begin(); iter_plugin_name != vec_plugins.end(); iter_plugin_name++)
  46 + {
  47 + std::string plugin_service = sp_python_utils_->GetPluginMetadata(*iter_plugin_name, "server");
  48 + if (plugin_service == "True")
  49 + {
  50 + if (sp_python_utils_->LoadPlugin(*iter_plugin_name))
  51 + {
  52 + if (sp_python_utils_->StartServerPlugin(*iter_plugin_name))
  53 + {
  54 + at_least_one_enabled = true;
  55 + ServerPlugins().push_back(*iter_plugin_name);
  56 + boost::format fmt = boost::format("Server plugin %1% loaded!") % *iter_plugin_name;
  57 + LOGGER_INFO(fmt.str());
  58 + }
  59 + else
  60 + {
  61 + LOGGER_CRITICAL("Error loading server plugin " + *iter_plugin_name);
  62 + }
  63 + }
  64 + else
  65 + {
  66 + LOGGER_CRITICAL("Error starting server plugin " + *iter_plugin_name);
  67 + }
  68 + }
  69 + }
  70 + return sp_python_utils_ && sp_python_utils_->IsEnabled() && at_least_one_enabled;
  71 +}
注册登录 后发表评论