summaryrefslogtreecommitdiff
path: root/cpp/test/Ice/plugin/Client.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-01-30 16:52:49 +0100
committerBenoit Foucher <benoit@zeroc.com>2015-01-30 16:52:49 +0100
commit94d6c3e457a486b77bef98ccee0537d6e7a757ae (patch)
treeb8e6be293019a4efe90b11a219abe631ac95e69f /cpp/test/Ice/plugin/Client.cpp
parentRename test::Controller > Test::Controller (diff)
downloadice-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.cpp56
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
{