⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbserverpluginmanager.cpp

📁 java开源的企业总线.xmlBlaster
💻 CPP
字号:
/*------------------------------------------------------------------------------Name:      CbServerPluginManager.cppProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   Manager to retrieve the correct callback protocol implementation------------------------------------------------------------------------------*//** * It returns the appropriate implementation of the I_CallbackServer * interface (note that this is a class in c++) for the given protocol. * with your own lowlevel SOCKET or CORBA coding as well. * * @see org.xmlBlaster.client.protocol.I_CallbackServer * @author <a href="mailto:michele@laghi.eu">Michele Laghi</a>. */#include <client/protocol/CbServerPluginManager.h>#ifdef COMPILE_CORBA_PLUGIN#  include <client/protocol/corba/CorbaDriverFactory.h>#endif#ifdef COMPILE_SOCKET_PLUGIN#   include <client/protocol/socket/SocketDriverFactory.h>#endif#include <util/Global.h>namespace org { namespace xmlBlaster { namespace client { namespace protocol {using namespace std;using namespace org::xmlBlaster::util;CbServerPluginManager::CbServerPluginManager(Global& global)   : ME("CbServerPluginManager"),     global_(global),     log_(global.getLog("org.xmlBlaster.client"))//     serverMap_(){   if (log_.call()) log_.call(ME, "::constructor");}CbServerPluginManager::~CbServerPluginManager(){   // should be synchronized .../*   ServerMap::iterator iter = serverMap_.begin();   while (iter != serverMap_.end()) {      I_CallbackServer* el = (*iter).second;      serverMap_.erase(iter);      delete el;      iter = serverMap_.begin();   }*/}I_CallbackServer& CbServerPluginManager::getPlugin(const string& instanceName, const string& type, const string& version){   if (log_.call()) log_.call(ME, "::getPlugin");   if (log_.trace())      log_.trace(ME, string("getPlugin: type: '") + type + string("', version: '") + version + "' for instance '" + instanceName + "'");//   string completeName = /*string(instanceName) + "/" + */ type + "/" + version;   if (type == Constants::IOR) {#     ifdef COMPILE_CORBA_PLUGIN      return org::xmlBlaster::client::protocol::corba::CorbaDriverFactory::getFactory(global_).getDriverInstance(&global_);#     endif   }   else if (type == Constants::SOCKET) {#     ifdef COMPILE_SOCKET_PLUGIN      return org::xmlBlaster::client::protocol::socket::SocketDriverFactory::getFactory(global_).getDriverInstance(&global_);#     endif   }   string embeddedMsg = string("plugin: '") + type +                        string("' and version: '") + version +                        string("' not supported");   throw XmlBlasterException(RESOURCE_CONFIGURATION_PLUGINFAILED,                    "client-c++",                    ME + string("::getPlugin"),                    "en",                    global_.getVersion() + " " + global_.getBuildTimestamp(),                    "",                    "",                    embeddedMsg);}void CbServerPluginManager::releasePlugin(const string& instanceName, const string& type, const string& version){   if (log_.call()) log_.call(ME, "::releasePlugin");   if (log_.trace())      log_.trace(ME, string("releasePlugin: type: '") + type + string("', version: '") + version + "' for instance '" + instanceName + "'");   if (type == Constants::IOR) {#     ifdef COMPILE_CORBA_PLUGIN      org::xmlBlaster::client::protocol::corba::CorbaDriverFactory::getFactory(global_).killDriverInstance(&global_);      return;#     endif   }   else if (type == Constants::SOCKET) {#     ifdef COMPILE_SOCKET_PLUGIN      org::xmlBlaster::client::protocol::socket::SocketDriverFactory::getFactory(global_).killDriverInstance(&global_);      return;#     endif   }   string embeddedMsg = string("plugin: '") + type +                        string("' and version: '") + version +                        string("' not supported");   throw XmlBlasterException(RESOURCE_CONFIGURATION_PLUGINFAILED,                    "client-c++",                    ME + string("::getPlugin"),                    "en",                    global_.getVersion() + " " + global_.getBuildTimestamp(),                    "",                    "",                    embeddedMsg);}}}}} // namespaces#ifdef _XMLBLASTER_CLASSTEST#include <assert.h>using namespace std;using namespace org::xmlBlaster::util;using namespace org::xmlBlaster::client::protocol;/** For testing: java org.xmlBlaster.authentication.plugins.simple.SecurityQos */int main(int args, char* argv[]){    Global& glob = Global::getInstance();    glob.initialize(args, argv);    CbServerPluginManager manager = glob.getCbServerPluginManager();    try {       I_CallbackServer& cbServer = manager.getPlugin(Constants::IOR, "1.0");    }    catch (XmlBlasterException &ex) {       cout << ex.toXml() << endl;       cout << "exception occured when retrieving a correct callback server" << endl;       assert(0);    }    try {       I_CallbackServer& cbServer = manager.getPlugin(Constants::SOCKET, "1.0");       cout << "The socket protocol is not implemented yet" << endl;       assert(0);    }    catch (XmlBlasterException &ex) {       cout << ex.toXml() << endl;       cout << "The socket protocol is not implemented yet, so the exception was normal" << endl;    }   return 0;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -