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