1、实现插件接口
local interface Plugin
{
void initialize();
void destroy();
};
extern "C"
{
ICE_DECLSPEC_EXPORT Ice::Plugin*
functionName(const Ice::CommunicatorPtr& communicator,const std::string& name,const Ice::StringSeq& args);
}
2、编译文件生成动态库libmyplugin.so
3、在配置文件中配置属性:
Ice.Plugin.MyPlugin=myplugin:functionName
4、如果在配置文件中加载了多个插件,并且多个插件间有顺序依赖关系,可以通过配置属性来解决:
Ice.PluginLoadOrder=MyPlugin1 MyPlugin2
5、在应用中可以通过communicator提供的相关接口获取到已经加载插件:
PluginManager Communicator::getPluginManager();
local interface PluginManager
{
void initializePlugins();
Plugin getPlugin(string name);
void addPlugin(string name, Plugin pi);
};
6、可以通过设置“Ice.InitPlugins=0”属性来让ICE延迟加载插件
local interface Plugin
{
void initialize();
void destroy();
};
extern "C"
{
ICE_DECLSPEC_EXPORT Ice::Plugin*
functionName(const Ice::CommunicatorPtr& communicator,const std::string& name,const Ice::StringSeq& args);
}
2、编译文件生成动态库libmyplugin.so
3、在配置文件中配置属性:
Ice.Plugin.MyPlugin=myplugin:functionName
4、如果在配置文件中加载了多个插件,并且多个插件间有顺序依赖关系,可以通过配置属性来解决:
Ice.PluginLoadOrder=MyPlugin1 MyPlugin2
5、在应用中可以通过communicator提供的相关接口获取到已经加载插件:
PluginManager Communicator::getPluginManager();
local interface PluginManager
{
void initializePlugins();
Plugin getPlugin(string name);
void addPlugin(string name, Plugin pi);
};
6、可以通过设置“Ice.InitPlugins=0”属性来让ICE延迟加载插件