diff options
author | Joe George <joe@zeroc.com> | 2015-12-08 11:33:42 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-12-08 16:09:24 -0500 |
commit | 6a43686ce26de5d2d5edf4a485ecff3a242c26b6 (patch) | |
tree | d31e4f16dc9ed6e28056a7224e045a4638955f5e /cpp/test/Ice/objects/Client.cpp | |
parent | C++11 mapping IceDiscovery plug-in (diff) | |
download | ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.tar.bz2 ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.tar.xz ice-6a43686ce26de5d2d5edf4a485ecff3a242c26b6.zip |
ICE-6908 - Add ValueFactory
ValueFactory is a replacement for ObjectFactory (which is still
available if needed). It is an interface with only one operation
and can has the "delegate" metadata.
Diffstat (limited to 'cpp/test/Ice/objects/Client.cpp')
-rw-r--r-- | cpp/test/Ice/objects/Client.cpp | 63 |
1 files changed, 43 insertions, 20 deletions
diff --git a/cpp/test/Ice/objects/Client.cpp b/cpp/test/Ice/objects/Client.cpp index 471f63de90e..cf1e60c1993 100644 --- a/cpp/test/Ice/objects/Client.cpp +++ b/cpp/test/Ice/objects/Client.cpp @@ -26,7 +26,7 @@ function<shared_ptr<T>(const string&)> makeFactory() }; } #else -class MyObjectFactory : public Ice::ObjectFactory +class MyValueFactory : public Ice::ValueFactory { public: @@ -69,35 +69,58 @@ public: return 0; } +}; +#endif +class MyObjectFactory : public Ice::ObjectFactory +{ +public: + MyObjectFactory() : _destroyed(false) + { + } + + ~MyObjectFactory() + { + assert(_destroyed); + } + + virtual Ice::ValuePtr create(const string& type) + { + return ICE_NULLPTR; + } + virtual void destroy() { - // Nothing to do + _destroyed = true; } + +private: + bool _destroyed; }; -#endif int run(int, char**, const Ice::CommunicatorPtr& communicator) { #ifdef ICE_CPP11_MAPPING - communicator->addObjectFactory(makeFactory<BI>(), "::Test::B"); - communicator->addObjectFactory(makeFactory<CI>(), "::Test::C"); - communicator->addObjectFactory(makeFactory<DI>(), "::Test::D"); - communicator->addObjectFactory(makeFactory<EI>(), "::Test::E"); - communicator->addObjectFactory(makeFactory<FI>(), "::Test::F"); - communicator->addObjectFactory(makeFactory<II>(), "::Test::I"); - communicator->addObjectFactory(makeFactory<JI>(), "::Test::J"); - communicator->addObjectFactory(makeFactory<HI>(), "::Test::H"); + communicator->addValueFactory(makeFactory<BI>(), "::Test::B"); + communicator->addValueFactory(makeFactory<CI>(), "::Test::C"); + communicator->addValueFactory(makeFactory<DI>(), "::Test::D"); + communicator->addValueFactory(makeFactory<EI>(), "::Test::E"); + communicator->addValueFactory(makeFactory<FI>(), "::Test::F"); + communicator->addValueFactory(makeFactory<II>(), "::Test::I"); + communicator->addValueFactory(makeFactory<JI>(), "::Test::J"); + communicator->addValueFactory(makeFactory<HI>(), "::Test::H"); + communicator->addObjectFactory(make_shared<MyObjectFactory>(), "TestOF"); #else - Ice::ObjectFactoryPtr factory = new MyObjectFactory; - communicator->addObjectFactory(factory, "::Test::B"); - communicator->addObjectFactory(factory, "::Test::C"); - communicator->addObjectFactory(factory, "::Test::D"); - communicator->addObjectFactory(factory, "::Test::E"); - communicator->addObjectFactory(factory, "::Test::F"); - communicator->addObjectFactory(factory, "::Test::I"); - communicator->addObjectFactory(factory, "::Test::J"); - communicator->addObjectFactory(factory, "::Test::H"); + Ice::ValueFactoryPtr factory = new MyValueFactory; + communicator->addValueFactory(factory, "::Test::B"); + communicator->addValueFactory(factory, "::Test::C"); + communicator->addValueFactory(factory, "::Test::D"); + communicator->addValueFactory(factory, "::Test::E"); + communicator->addValueFactory(factory, "::Test::F"); + communicator->addValueFactory(factory, "::Test::I"); + communicator->addValueFactory(factory, "::Test::J"); + communicator->addValueFactory(factory, "::Test::H"); + communicator->addObjectFactory(new MyObjectFactory(), "TestOF"); #endif InitialPrxPtr allTests(const Ice::CommunicatorPtr&); |