summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Database.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-09-30 04:58:01 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-09-30 04:58:01 +0000
commita795900d002f4182b13b32f6ebf3391458786123 (patch)
tree3a75ed09a7ce57e0253f54ee6f0cbcf08dfba3ac /cpp/src/IceGrid/Database.cpp
parentBug 498. (diff)
downloadice-a795900d002f4182b13b32f6ebf3391458786123.tar.bz2
ice-a795900d002f4182b13b32f6ebf3391458786123.tar.xz
ice-a795900d002f4182b13b32f6ebf3391458786123.zip
Added support for <adapter name>.ReplicaId.
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r--cpp/src/IceGrid/Database.cpp54
1 files changed, 28 insertions, 26 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 843b8bdf383..0bd1b6c0134 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -59,8 +59,8 @@ public:
string id;
is >> id;
string adapterId = id.substr(0, size);
- string serverId = (id.size() > size) ? id.substr(size + 1) : string();
- return _database->getAdapterDirectProxy(serverId, adapterId);
+ string replicaId = (id.size() > size) ? id.substr(size + 1) : string();
+ return _database->getAdapterDirectProxy(adapterId, replicaId);
}
virtual void
@@ -490,7 +490,7 @@ Database::getAllNodeServers(const string& node)
}
bool
-Database::setAdapterDirectProxy(const string& serverId, const string& adapterId, const Ice::ObjectPrx& proxy)
+Database::setAdapterDirectProxy(const string& adapterId, const string& replicaId, const Ice::ObjectPrx& proxy)
{
Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
StringObjectProxiesDict adapters(connection, _adapterDbName);
@@ -506,32 +506,32 @@ Database::setAdapterDirectProxy(const string& serverId, const string& adapterId,
if(p != adapters.end())
{
StringObjectProxyDict proxies = p->second;
- proxies[serverId] = proxy;
+ proxies[replicaId] = proxy;
p.set(proxies);
if(_traceLevels->adapter > 0)
{
Ice::Trace out(_traceLevels->logger, _traceLevels->adapterCat);
out << "updated adapter `" << adapterId << "'";
- if(!serverId.empty())
+ if(!replicaId.empty())
{
- out << " from server `" << serverId << "'";
+ out << " from replica `" << replicaId << "'";
}
}
}
else
{
StringObjectProxyDict proxies;
- proxies[serverId] = proxy;
+ proxies[replicaId] = proxy;
adapters.put(StringObjectProxiesDict::value_type(adapterId, proxies));
if(_traceLevels->adapter > 0)
{
Ice::Trace out(_traceLevels->logger, _traceLevels->adapterCat);
out << "added adapter `" << adapterId << "'";
- if(!serverId.empty())
+ if(!replicaId.empty())
{
- out << " from server `" << serverId << "'";
+ out << " from replica `" << replicaId << "'";
}
}
}
@@ -552,11 +552,9 @@ Database::setAdapterDirectProxy(const string& serverId, const string& adapterId,
}
StringObjectProxyDict proxies = p->second;
- if(proxies.erase(serverId) == 0)
+ if(proxies.erase(replicaId) == 0)
{
- ServerNotExistException ex;
- ex.id = serverId;
- throw ex;
+ throw AdapterNotExistException(adapterId, replicaId);
}
if(proxies.empty())
@@ -577,9 +575,9 @@ Database::setAdapterDirectProxy(const string& serverId, const string& adapterId,
{
Ice::Trace out(_traceLevels->logger, _traceLevels->adapterCat);
out << "removed adapter `" << adapterId << "'";
- if(!serverId.empty())
+ if(!replicaId.empty())
{
- out << " from server `" << serverId << "'";
+ out << " from replica `" << replicaId << "'";
}
}
}
@@ -588,14 +586,14 @@ Database::setAdapterDirectProxy(const string& serverId, const string& adapterId,
}
Ice::ObjectPrx
-Database::getAdapterDirectProxy(const string& serverId, const string& adapterId)
+Database::getAdapterDirectProxy(const string& adapterId, const string& replicaId)
{
Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
StringObjectProxiesDict adapters(connection, _adapterDbName);
StringObjectProxiesDict::const_iterator p = adapters.find(adapterId);
if(p != adapters.end())
{
- StringObjectProxyDict::const_iterator q = p->second.find(serverId);
+ StringObjectProxyDict::const_iterator q = p->second.find(replicaId);
if(q != p->second.end())
{
return q->second;
@@ -634,16 +632,14 @@ Database::removeAdapter(const string& adapterId)
}
else
{
- AdapterNotExistException ex;
- ex.id = adapterId;
- throw ex;
+ throw AdapterNotExistException(adapterId, "");
}
}
AdapterPrx
-Database::getAdapter(const string& id, const string& serverId)
+Database::getAdapter(const string& id, const string& replicaId)
{
- return _adapterCache.get(id)->getProxy(serverId);
+ return _adapterCache.get(id)->getProxy(replicaId);
}
vector<pair<string, AdapterPrx> >
@@ -654,12 +650,18 @@ Database::getAdapters(const string& id, int& endpointCount)
// server, if that's the case we get the adapter proxy from the
// server.
//
+ auto_ptr<Ice::UserException> exception;
try
{
return _adapterCache.get(id)->getProxies(endpointCount);
}
- catch(const AdapterNotExistException&)
+ catch(AdapterNotExistException& ex)
+ {
+ exception.reset(dynamic_cast<AdapterNotExistException*>(ex.ice_clone()));
+ }
+ catch(const NodeUnreachableException& ex)
{
+ exception.reset(dynamic_cast<NodeUnreachableException*>(ex.ice_clone()));
}
//
@@ -687,9 +689,9 @@ Database::getAdapters(const string& id, int& endpointCount)
return adapters;
}
- AdapterNotExistException ex;
- ex.id = id;
- throw ex;
+ assert(exception.get());
+ exception->ice_throw();
+ return vector<pair<string, AdapterPrx> >(); // Keeps the compiler happy.
}
Ice::StringSeq