diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-10-14 15:11:46 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-10-14 15:11:46 +0200 |
commit | 11730b2fdde8f09265a6e220ee151b0212fad245 (patch) | |
tree | dc78e2909931e6d3aa813f3b9e3e8cc4ca3a2823 /cpp/src/IceGrid/AdminSessionI.cpp | |
parent | Fixed ICE-5701 & ICE-5721: warning on shutdown of replica (diff) | |
download | ice-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.cpp | 26 |
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)); } |