summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/NodeRegistryI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IcePack/NodeRegistryI.cpp')
-rw-r--r--cpp/src/IcePack/NodeRegistryI.cpp44
1 files changed, 31 insertions, 13 deletions
diff --git a/cpp/src/IcePack/NodeRegistryI.cpp b/cpp/src/IcePack/NodeRegistryI.cpp
index bc4327f70b9..6b86c16c743 100644
--- a/cpp/src/IcePack/NodeRegistryI.cpp
+++ b/cpp/src/IcePack/NodeRegistryI.cpp
@@ -15,6 +15,7 @@
#include <IcePack/NodeRegistryI.h>
#include <IcePack/AdapterFactory.h>
#include <IcePack/TraceLevels.h>
+#include <Freeze/Initialize.h>
using namespace std;
using namespace IcePack;
@@ -25,12 +26,16 @@ IcePack::NodeRegistryI::NodeRegistryI(const Ice::CommunicatorPtr& communicator,
const AdapterRegistryPtr& adapterRegistry,
const AdapterFactoryPtr& adapterFactory,
const TraceLevelsPtr& traceLevels) :
- _dict(communicator, envName, dbName),
+ _connectionCache(Freeze::createConnection(communicator, envName)),
+ _dictCache(_connectionCache, dbName),
_adapterRegistry(adapterRegistry),
_adapterFactory(adapterFactory),
- _traceLevels(traceLevels)
+ _traceLevels(traceLevels),
+ _envName(envName),
+ _communicator(communicator),
+ _dbName(dbName)
{
- for(StringObjectProxyDict::const_iterator p = _dict.begin(); p != _dict.end(); ++p)
+ for(StringObjectProxyDict::const_iterator p = _dictCache.begin(); p != _dictCache.end(); ++p)
{
NodePrx node = NodePrx::uncheckedCast(p->second);
try
@@ -52,8 +57,11 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice::
{
IceUtil::Mutex::Lock sync(*this);
- StringObjectProxyDict::iterator p = _dict.find(name);
- if(p != _dict.end())
+ Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
+ StringObjectProxyDict dict(connection, _dbName);
+
+ StringObjectProxyDict::iterator p = dict.find(name);
+ if(p != dict.end())
{
try
{
@@ -76,7 +84,7 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice::
}
else
{
- _dict.put(pair<const string, const Ice::ObjectPrx>(name, node));
+ dict.put(pair<const string, const Ice::ObjectPrx>(name, node));
if(_traceLevels->nodeRegistry > 0)
{
@@ -120,13 +128,17 @@ IcePack::NodeRegistryI::remove(const string& name, const Ice::Current&)
{
IceUtil::Mutex::Lock sync(*this);
- StringObjectProxyDict::iterator p = _dict.find(name);
- if(p == _dict.end())
+ Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
+ StringObjectProxyDict dict(connection, _dbName);
+
+
+ StringObjectProxyDict::iterator p = dict.find(name);
+ if(p == dict.end())
{
throw NodeNotExistException();
}
- _dict.erase(p);
+ dict.erase(p);
if(_traceLevels->nodeRegistry > 0)
{
@@ -151,8 +163,11 @@ IcePack::NodeRegistryI::remove(const string& name, const Ice::Current&)
NodePrx
IcePack::NodeRegistryI::findByName(const string& name, const Ice::Current&)
{
- StringObjectProxyDict::const_iterator p = _dict.find(name);
- if(p != _dict.end())
+ Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
+ StringObjectProxyDict dict(connection, _dbName);
+
+ StringObjectProxyDict::const_iterator p = dict.find(name);
+ if(p != dict.end())
{
try
{
@@ -172,10 +187,13 @@ IcePack::NodeRegistryI::findByName(const string& name, const Ice::Current&)
Ice::StringSeq
IcePack::NodeRegistryI::getAll(const Ice::Current&) const
{
+ Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
+ StringObjectProxyDict dict(connection, _dbName);
+
Ice::StringSeq names;
- names.reserve(_dict.size());
+ names.reserve(dict.size());
- for(StringObjectProxyDict::const_iterator p = _dict.begin(); p != _dict.end(); ++p)
+ for(StringObjectProxyDict::const_iterator p = dict.begin(); p != dict.end(); ++p)
{
names.push_back(p->first);
}