summaryrefslogtreecommitdiff
path: root/cpp/src/icegriddb/IceGridDB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/icegriddb/IceGridDB.cpp')
-rw-r--r--cpp/src/icegriddb/IceGridDB.cpp44
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);