summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdminSessionI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-10-14 15:11:46 +0200
committerBenoit Foucher <benoit@zeroc.com>2014-10-14 15:11:46 +0200
commit11730b2fdde8f09265a6e220ee151b0212fad245 (patch)
treedc78e2909931e6d3aa813f3b9e3e8cc4ca3a2823 /cpp/src/IceGrid/AdminSessionI.cpp
parentFixed ICE-5701 & ICE-5721: warning on shutdown of replica (diff)
downloadice-11730b2fdde8f09265a6e220ee151b0212fad245.tar.bz2
ice-11730b2fdde8f09265a6e220ee151b0212fad245.tar.xz
ice-11730b2fdde8f09265a6e220ee151b0212fad245.zip
Fixed ICE-5473: the registry can now resolve observer indirect proxies
Diffstat (limited to 'cpp/src/IceGrid/AdminSessionI.cpp')
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp
index 1e88307b8b6..1af3426363f 100644
--- a/cpp/src/IceGrid/AdminSessionI.cpp
+++ b/cpp/src/IceGrid/AdminSessionI.cpp
@@ -185,9 +185,12 @@ AdminSessionI::setObservers(const RegistryObserverPrx& registryObserver,
throw ex;
}
+ const int t = _timeout * 1000;
+ const Ice::LocatorPrx l = _registry->getLocator();
if(registryObserver)
{
- setupObserverSubscription(RegistryObserverTopicName, registryObserver->ice_timeout(_timeout * 1000));
+ setupObserverSubscription(RegistryObserverTopicName,
+ addForwarder(registryObserver->ice_timeout(t)->ice_locator(l)));
}
else
{
@@ -196,7 +199,8 @@ AdminSessionI::setObservers(const RegistryObserverPrx& registryObserver,
if(nodeObserver)
{
- setupObserverSubscription(NodeObserverTopicName, nodeObserver->ice_timeout(_timeout * 1000));
+ setupObserverSubscription(NodeObserverTopicName,
+ addForwarder(nodeObserver->ice_timeout(t)->ice_locator(l)));
}
else
{
@@ -205,7 +209,8 @@ AdminSessionI::setObservers(const RegistryObserverPrx& registryObserver,
if(appObserver)
{
- setupObserverSubscription(ApplicationObserverTopicName, appObserver->ice_timeout(_timeout * 1000));
+ setupObserverSubscription(ApplicationObserverTopicName,
+ addForwarder(appObserver->ice_timeout(t)->ice_locator(l)));
}
else
{
@@ -214,16 +219,18 @@ AdminSessionI::setObservers(const RegistryObserverPrx& registryObserver,
if(adapterObserver)
{
- setupObserverSubscription(AdapterObserverTopicName, adapterObserver->ice_timeout(_timeout * 1000));
+ setupObserverSubscription(AdapterObserverTopicName,
+ addForwarder(adapterObserver->ice_timeout(t)->ice_locator(l)));
}
else
{
setupObserverSubscription(AdapterObserverTopicName, Ice::ObjectPrx());
}
-
+
if(objectObserver)
{
- setupObserverSubscription(ObjectObserverTopicName, objectObserver->ice_timeout(_timeout * 1000));
+ setupObserverSubscription(ObjectObserverTopicName,
+ addForwarder(objectObserver->ice_timeout(t)->ice_locator(l)));
}
else
{
@@ -414,7 +421,12 @@ AdminSessionI::addForwarder(const Ice::Identity& id, const Ice::Current& current
{
return Ice::ObjectPrx();
}
- Ice::ObjectPrx prx = current.con->createProxy(id)->ice_encodingVersion(current.encoding);
+ return addForwarder(current.con->createProxy(id)->ice_encodingVersion(current.encoding));
+}
+
+Ice::ObjectPrx
+AdminSessionI::addForwarder(const Ice::ObjectPrx& prx)
+{
return _registry->getRegistryAdapter()->addWithUUID(new SubscriberForwarderI(prx));
}