diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-01-30 16:52:49 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-01-30 16:52:49 +0100 |
commit | 94d6c3e457a486b77bef98ccee0537d6e7a757ae (patch) | |
tree | b8e6be293019a4efe90b11a219abe631ac95e69f /cpp/test/Ice/plugin/Client.cpp | |
parent | Rename test::Controller > Test::Controller (diff) | |
download | ice-94d6c3e457a486b77bef98ccee0537d6e7a757ae.tar.bz2 ice-94d6c3e457a486b77bef98ccee0537d6e7a757ae.tar.xz ice-94d6c3e457a486b77bef98ccee0537d6e7a757ae.zip |
Added support for registration of plugin factories
Diffstat (limited to 'cpp/test/Ice/plugin/Client.cpp')
-rw-r--r-- | cpp/test/Ice/plugin/Client.cpp | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/cpp/test/Ice/plugin/Client.cpp b/cpp/test/Ice/plugin/Client.cpp index 77747547e2e..a767e1814dc 100644 --- a/cpp/test/Ice/plugin/Client.cpp +++ b/cpp/test/Ice/plugin/Client.cpp @@ -54,8 +54,7 @@ public: ~MyPlugin() { - test(_initialized); - test(_destroyed); + test(!_initialized || _destroyed); // If initialized, we must be destroyed too. } private: @@ -68,12 +67,65 @@ typedef IceUtil::Handle<MyPlugin> MyPluginPtr; } +extern "C" +{ + +Ice::Plugin* +createMyPlugin(const ::Ice::CommunicatorPtr&, const std::string&, const ::Ice::StringSeq&) +{ + return new MyPlugin(); +} + +} + int main(int argc, char* argv[]) { int status = EXIT_SUCCESS; Ice::CommunicatorPtr communicator; + Ice::registerPluginFactory("Static1", createMyPlugin, true); // true = Load on communicator initialization + Ice::registerPluginFactory("Static2", createMyPlugin, false); + + cout << "testing static plugin factory... " << flush; + try + { + communicator = Ice::initialize(argc, argv); + MyPluginPtr plugin = MyPluginPtr::dynamicCast(communicator->getPluginManager()->getPlugin("Static1")); + test(plugin && plugin->isInitialized()); + try + { + communicator->getPluginManager()->getPlugin("Static2"); + } + catch(const Ice::NotRegisteredException&) + { + } + communicator->destroy(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + test(false); + } + try + { + Ice::InitializationData initData; + initData.properties = Ice::createProperties(argc, argv); + initData.properties->setProperty("Ice.Plugin.Static2", "1"); + communicator = Ice::initialize(argc, argv, initData); + MyPluginPtr plugin = MyPluginPtr::dynamicCast(communicator->getPluginManager()->getPlugin("Static1")); + test(plugin && plugin->isInitialized()); + plugin = MyPluginPtr::dynamicCast(communicator->getPluginManager()->getPlugin("Static2")); + test(plugin && plugin->isInitialized()); + communicator->destroy(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + test(false); + } + cout << "ok" << endl; + cout << "testing a simple plug-in... " << flush; try { |