ICE插件开发都要从Ice::Plugin继承,实现initialize()和destroy()两个接口,如ICEloggerPlugin的实现:
Class ICE_API LoggerPlugin : public Ice::Plugin
{
Public:
LoggerPlugin(constCommunicatorPtr& communicator, const LoggerPtr&);
Virtual void initialize();
Virtual void destroy();
};
除了继承Ice::Plugin继承外,还需提供程序加载插件的入口函数,函数类型定义
Typedef ::Ice::Plugin* (func)( const Ice::CommunicatorPtr&communicator, const string& s, const Ice::StringSeq& seq)
返回值必须是继承::Ice::Plugin的实现,入参1是application创建的communicator,入参2是插件的名称,入参3是插件的参数列表。
如:
extern ”C”
{
ICE_DECLSPEC_EXPORT::Ice::Plugin*
CreateLogger(const Ice::CommunicatiorPtr&communicator, const string& s, const Ice::StringSeq& seq)
{
return newIce::LoggerPlugin(communicator, new Ice::LoggerI(appname(), seq[0]));
}
}
修改配置文件加载插件,是通过Ice.Plugin.{PluginName}加载插件的
参考源码${ICE_SOURCE}/cpp/demo/Ice/plugin