36 public trantor::NonCopyable
42 if (status_ == PluginStatus::None)
44 status_ = PluginStatus::Initializing;
45 for (
auto dependency : dependencies_)
47 dependency->initialize();
50 status_ = PluginStatus::Initialized;
51 if (initializedCallback_)
52 initializedCallback_(
this);
54 else if (status_ == PluginStatus::Initialized)
60 LOG_FATAL <<
"There are a circular dependency within plugins.";
83 PluginStatus status_{PluginStatus::None};
84 friend class PluginsManager;
86 void setConfig(
const Json::Value &config)
91 void addDependency(PluginBase *dp)
93 dependencies_.push_back(dp);
96 void setInitializedCallback(
const std::function<
void(PluginBase *)> &cb)
98 initializedCallback_ = cb;
102 std::vector<PluginBase *> dependencies_;
103 std::function<void(PluginBase *)> initializedCallback_;