// // Copyright (c) ZeroC, Inc. All rights reserved. // #include #include #include // // Required to trigger initialization of Derived object factory. // #include // // Required to trigger initialization of DerivedEx exception factory. // #include // For 'Ice::Communicator::addObjectFactory()' deprecation #if defined(_MSC_VER) # pragma warning( disable : 4996 ) #elif defined(__GNUC__) # pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif using namespace std; using namespace Test; #ifdef ICE_CPP11_MAPPING template function(string)> makeFactory() { return [](string) { return make_shared(); }; } #else class MyValueFactory : public Ice::ValueFactory { public: virtual Ice::ObjectPtr create(const string& type) { if(type == "::Test::B") { return new BI; } else if(type == "::Test::C") { return new CI; } else if(type == "::Test::D") { return new DI; } else if(type == "::Test::E") { return new EI; } else if(type == "::Test::F") { return new FI; } else if(type == "::Test::I") { return new II; } else if(type == "::Test::J") { return new JI; } else if(type == "::Test::H") { return new HI; } assert(false); // Should never be reached return 0; } }; #endif class MyObjectFactory : public Ice::ObjectFactory { public: MyObjectFactory() : _destroyed(false) { } ~MyObjectFactory() { assert(_destroyed); } virtual Ice::ValuePtr create(const string&) { return ICE_NULLPTR; } virtual void destroy() { _destroyed = true; } private: bool _destroyed; }; class Client : public Test::TestHelper { public: void run(int, char**); }; void Client::run(int argc, char** argv) { Ice::PropertiesPtr properties = createTestProperties(argc, argv); #ifndef ICE_CPP11_MAPPING properties->setProperty("Ice.CollectObjects", "1"); #endif Ice::CommunicatorHolder communicator = initialize(argc, argv, properties); #ifdef ICE_CPP11_MAPPING communicator->getValueFactoryManager()->add(makeFactory(), "::Test::B"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::C"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::D"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::E"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::F"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::I"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::J"); communicator->getValueFactoryManager()->add(makeFactory(), "::Test::H"); communicator->addObjectFactory(make_shared(), "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(Test::TestHelper*); InitialPrxPtr initial = allTests(this); initial->shutdown(); } DEFINE_TEST(Client)