summaryrefslogtreecommitdiff
path: root/cpp/test/Ice/objects/Client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test/Ice/objects/Client.cpp')
-rw-r--r--cpp/test/Ice/objects/Client.cpp123
1 files changed, 87 insertions, 36 deletions
diff --git a/cpp/test/Ice/objects/Client.cpp b/cpp/test/Ice/objects/Client.cpp
index 3c8f3dbc0fd..bceb4001e3a 100644
--- a/cpp/test/Ice/objects/Client.cpp
+++ b/cpp/test/Ice/objects/Client.cpp
@@ -10,15 +10,43 @@
#include <Ice/Ice.h>
#include <TestCommon.h>
#include <TestI.h>
-#include <Derived.h>
+
+//
+// Required to trigger initialization of Derived object factory.
+//
+#include <Derived.h>
+
+//
+// Required to trigger initialization of DerivedEx exception factory.
+//
#include <DerivedEx.h>
DEFINE_TEST("client")
+#ifdef _MSC_VER
+// For 'Ice::Communicator::addObjectFactory()' deprecation
+#pragma warning( disable : 4996 )
+#endif
+
+#if defined(__GNUC__)
+// For 'Ice::Communicator::addObjectFactory()' deprecation
+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+
using namespace std;
using namespace Test;
-class MyObjectFactory : public Ice::ObjectFactory
+#ifdef ICE_CPP11_MAPPING
+template<typename T>
+function<shared_ptr<T>(string)> makeFactory()
+{
+ return [](string)
+ {
+ return make_shared<T>();
+ };
+}
+#else
+class MyValueFactory : public Ice::ValueFactory
{
public:
@@ -61,27 +89,62 @@ 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;
};
int
run(int, char**, const Ice::CommunicatorPtr& communicator)
{
- 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");
-
- InitialPrx allTests(const Ice::CommunicatorPtr&);
- InitialPrx initial = allTests(communicator);
+#ifdef ICE_CPP11_MAPPING
+ communicator->getValueFactoryManager()->add(makeFactory<BI>(), "::Test::B");
+ communicator->getValueFactoryManager()->add(makeFactory<CI>(), "::Test::C");
+ communicator->getValueFactoryManager()->add(makeFactory<DI>(), "::Test::D");
+ communicator->getValueFactoryManager()->add(makeFactory<EI>(), "::Test::E");
+ communicator->getValueFactoryManager()->add(makeFactory<FI>(), "::Test::F");
+ communicator->getValueFactoryManager()->add(makeFactory<II>(), "::Test::I");
+ communicator->getValueFactoryManager()->add(makeFactory<JI>(), "::Test::J");
+ communicator->getValueFactoryManager()->add(makeFactory<HI>(), "::Test::H");
+ communicator->addObjectFactory(make_shared<MyObjectFactory>(), "TestOF");
+#else
+ Ice::ValueFactoryPtr factory = new MyValueFactory;
+ communicator->getValueFactoryManager()->add(factory, "::Test::B");
+ communicator->getValueFactoryManager()->add(factory, "::Test::C");
+ communicator->getValueFactoryManager()->add(factory, "::Test::D");
+ communicator->getValueFactoryManager()->add(factory, "::Test::E");
+ communicator->getValueFactoryManager()->add(factory, "::Test::F");
+ communicator->getValueFactoryManager()->add(factory, "::Test::I");
+ communicator->getValueFactoryManager()->add(factory, "::Test::J");
+ communicator->getValueFactoryManager()->add(factory, "::Test::H");
+ communicator->addObjectFactory(new MyObjectFactory(), "TestOF");
+#endif
+
+ InitialPrxPtr allTests(const Ice::CommunicatorPtr&);
+ InitialPrxPtr initial = allTests(communicator);
initial->shutdown();
return EXIT_SUCCESS;
}
@@ -91,34 +154,22 @@ main(int argc, char* argv[])
{
#ifdef ICE_STATIC_LIBS
Ice::registerIceSSL();
+# if defined(__linux)
+ Ice::registerIceBT();
+# endif
#endif
- int status;
- Ice::CommunicatorPtr communicator;
-
try
{
- communicator = Ice::initialize(argc, argv);
- status = run(argc, argv, communicator);
+ Ice::CommunicatorHolder ich = Ice::initialize(argc, argv);
+ RemoteConfig rc("Ice/objects", argc, argv, ich.communicator());
+ int status = run(argc, argv, ich.communicator());
+ rc.finished(status);
+ return status;
}
catch(const Ice::Exception& ex)
{
cerr << ex << endl;
- status = EXIT_FAILURE;
- }
-
- if(communicator)
- {
- try
- {
- communicator->destroy();
- }
- catch(const Ice::Exception& ex)
- {
- cerr << ex << endl;
- status = EXIT_FAILURE;
- }
+ return EXIT_FAILURE;
}
-
- return status;
}