diff options
Diffstat (limited to 'cpp/src/icegriddb/IceGridDB.cpp')
-rw-r--r-- | cpp/src/icegriddb/IceGridDB.cpp | 44 |
1 files changed, 12 insertions, 32 deletions
diff --git a/cpp/src/icegriddb/IceGridDB.cpp b/cpp/src/icegriddb/IceGridDB.cpp index f403d3e94bf..58c37588a2c 100644 --- a/cpp/src/icegriddb/IceGridDB.cpp +++ b/cpp/src/icegriddb/IceGridDB.cpp @@ -12,6 +12,7 @@ #include <IceGrid/DBTypes.h> #include <IceUtil/DisableWarnings.h> +#include <iterator> #include <fstream> using namespace std; @@ -64,33 +65,6 @@ private: string _serverVersion; }; -class ValueFactoryI : public Ice::ValueFactory -{ -public: - - ValueFactoryI(const string& serverVersion) : - _serverVersion(serverVersion) - { - } - - virtual Ice::ObjectPtr create(const string& type) - { - if(type == "::IceGrid::ServerDescriptor") - { - return new ServerDescriptorI(_serverVersion); - } - else if(type == "::IceGrid::IceBoxDescriptor") - { - return new IceBoxDescriptorI(_serverVersion); - } - return 0; - } - -private: - - string _serverVersion; -}; - } // @@ -120,7 +94,7 @@ struct StreamReader<IceGrid::ReplicaGroupDescriptor, Ice::InputStream> int run(const Ice::StringSeq&); -Ice::CommunicatorPtr communicator; +shared_ptr<Ice::Communicator> communicator; void destroyCommunicator(int) @@ -139,7 +113,7 @@ main(int argc, char* argv[]) try { - Ice::CtrlCHandler ctrlCHandler; + IceUtil::CtrlCHandler ctrlCHandler; Ice::CommunicatorHolder ich(argc, argv); communicator = ich.communicator(); @@ -301,9 +275,15 @@ run(const Ice::StringSeq& args) if(!serverVersion.empty()) { - Ice::ValueFactoryPtr factory = new ValueFactoryI(serverVersion); - communicator->getValueFactoryManager()->add(factory, "::IceGrid::ServerDescriptor"); - communicator->getValueFactoryManager()->add(factory, "::IceGrid::IceBoxDescriptor"); + communicator->getValueFactoryManager()->add([serverVersion](const string&) + { + return make_shared<ServerDescriptorI>(serverVersion); + }, IceGrid::ServerDescriptor::ice_staticId()); + + communicator->getValueFactoryManager()->add([serverVersion](const string&) + { + return make_shared<IceBoxDescriptorI>(serverVersion); + }, IceGrid::IceBoxDescriptor::ice_staticId()); } Ice::InputStream stream(communicator, dbContext.encoding, buf); |