summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/IceDiscovery/PluginI.cpp9
-rw-r--r--cpp/src/IceDiscovery/PluginI.h1
-rw-r--r--cpp/src/IceLocatorDiscovery/PluginI.cpp10
-rw-r--r--csharp/src/IceDiscovery/PluginI.cs10
-rw-r--r--csharp/src/IceLocatorDiscovery/PluginI.cs10
-rw-r--r--java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java10
-rw-r--r--java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java10
-rw-r--r--java/src/IceDiscovery/src/main/java/com/zeroc/IceDiscovery/PluginI.java10
-rw-r--r--java/src/IceLocatorDiscovery/src/main/java/com/zeroc/IceLocatorDiscovery/PluginI.java10
9 files changed, 64 insertions, 16 deletions
diff --git a/cpp/src/IceDiscovery/PluginI.cpp b/cpp/src/IceDiscovery/PluginI.cpp
index 37992bdab35..1a76f34ff06 100644
--- a/cpp/src/IceDiscovery/PluginI.cpp
+++ b/cpp/src/IceDiscovery/PluginI.cpp
@@ -148,7 +148,8 @@ PluginI::initialize()
//
Ice::ObjectPrxPtr loc = _locatorAdapter->addWithUUID(ICE_MAKE_SHARED(LocatorI, _lookup, locatorRegistryPrx));
_defaultLocator = _communicator->getDefaultLocator();
- _communicator->setDefaultLocator(ICE_UNCHECKED_CAST(Ice::LocatorPrx, loc));
+ _locator = ICE_UNCHECKED_CAST(Ice::LocatorPrx, loc);
+ _communicator->setDefaultLocator(_locator);
_multicastAdapter->activate();
_replyAdapter->activate();
@@ -162,5 +163,9 @@ PluginI::destroy()
_replyAdapter->destroy();
_locatorAdapter->destroy();
_lookup->destroy();
- _communicator->setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime.
+ if(_communicator->getDefaultLocator() == _locator)
+ {
+ _communicator->setDefaultLocator(_defaultLocator);
+ }
}
diff --git a/cpp/src/IceDiscovery/PluginI.h b/cpp/src/IceDiscovery/PluginI.h
index e8503667b1b..cd565b637e5 100644
--- a/cpp/src/IceDiscovery/PluginI.h
+++ b/cpp/src/IceDiscovery/PluginI.h
@@ -32,6 +32,7 @@ private:
Ice::ObjectAdapterPtr _replyAdapter;
Ice::ObjectAdapterPtr _locatorAdapter;
LookupIPtr _lookup;
+ Ice::LocatorPrxPtr _locator;
Ice::LocatorPrxPtr _defaultLocator;
};
diff --git a/cpp/src/IceLocatorDiscovery/PluginI.cpp b/cpp/src/IceLocatorDiscovery/PluginI.cpp
index 34c23efc01b..7a32c20a844 100644
--- a/cpp/src/IceLocatorDiscovery/PluginI.cpp
+++ b/cpp/src/IceLocatorDiscovery/PluginI.cpp
@@ -225,6 +225,7 @@ private:
Ice::ObjectAdapterPtr _locatorAdapter;
Ice::ObjectAdapterPtr _replyAdapter;
LocatorIPtr _locator;
+ Ice::LocatorPrxPtr _locatorPrx;
Ice::LocatorPrxPtr _defaultLocator;
};
@@ -334,7 +335,8 @@ PluginI::initialize()
_locator = ICE_MAKE_SHARED(LocatorI, _name, ICE_UNCHECKED_CAST(LookupPrx, lookupPrx), properties, instanceName,
voidLocator);
_defaultLocator = _communicator->getDefaultLocator();
- _communicator->setDefaultLocator(ICE_UNCHECKED_CAST(Ice::LocatorPrx, _locatorAdapter->add(_locator, id)));
+ _locatorPrx = ICE_UNCHECKED_CAST(Ice::LocatorPrx, _locatorAdapter->add(_locator, id));
+ _communicator->setDefaultLocator(_locatorPrx);
Ice::ObjectPrxPtr lookupReply = _replyAdapter->addWithUUID(ICE_MAKE_SHARED(LookupReplyI, _locator))->ice_datagram();
_locator->setLookupReply(ICE_UNCHECKED_CAST(LookupReplyPrx, lookupReply));
@@ -354,7 +356,11 @@ PluginI::destroy()
{
_replyAdapter->destroy();
_locatorAdapter->destroy();
- _communicator->setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator->getDefaultLocator() == _locatorPrx)
+ {
+ _communicator->setDefaultLocator(_defaultLocator);
+ }
}
void
diff --git a/csharp/src/IceDiscovery/PluginI.cs b/csharp/src/IceDiscovery/PluginI.cs
index f2e877569ad..f39e13a3939 100644
--- a/csharp/src/IceDiscovery/PluginI.cs
+++ b/csharp/src/IceDiscovery/PluginI.cs
@@ -114,7 +114,8 @@ namespace IceDiscovery
loc = _locatorAdapter.addWithUUID(
new LocatorI(lookup, Ice.LocatorRegistryPrxHelper.uncheckedCast(locatorRegistryPrx)));
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(loc));
+ _locator = Ice.LocatorPrxHelper.uncheckedCast(loc);
+ _communicator.setDefaultLocator(_locator);
_multicastAdapter.activate();
_replyAdapter.activate();
@@ -126,13 +127,18 @@ namespace IceDiscovery
_multicastAdapter.destroy();
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().Equals(_locator))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
private Ice.Communicator _communicator;
private Ice.ObjectAdapter _multicastAdapter;
private Ice.ObjectAdapter _replyAdapter;
private Ice.ObjectAdapter _locatorAdapter;
+ private Ice.LocatorPrx _locator;
private Ice.LocatorPrx _defaultLocator;
}
diff --git a/csharp/src/IceLocatorDiscovery/PluginI.cs b/csharp/src/IceLocatorDiscovery/PluginI.cs
index 259ac68622f..2a55fe8d4cc 100644
--- a/csharp/src/IceLocatorDiscovery/PluginI.cs
+++ b/csharp/src/IceLocatorDiscovery/PluginI.cs
@@ -565,7 +565,8 @@ namespace IceLocatorDiscovery
_defaultLocator = _communicator.getDefaultLocator();
_locator = new LocatorI(_name, LookupPrxHelper.uncheckedCast(lookupPrx), properties, instanceName, voidLo);
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator)));
+ _locatorPrx = Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator));
+ _communicator.setDefaultLocator(_locatorPrx);
Ice.ObjectPrx lookupReply = _replyAdapter.addWithUUID(new LookupReplyI(_locator)).ice_datagram();
_locator.setLookupReply(LookupReplyPrxHelper.uncheckedCast(lookupReply));
@@ -579,7 +580,11 @@ namespace IceLocatorDiscovery
{
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().Equals(_locatorPrx))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
List<Ice.LocatorPrx>
@@ -593,6 +598,7 @@ namespace IceLocatorDiscovery
private Ice.ObjectAdapter _locatorAdapter;
private Ice.ObjectAdapter _replyAdapter;
private LocatorI _locator;
+ private Ice.LocatorPrx _locatorPrx;
private Ice.LocatorPrx _defaultLocator;
}
}
diff --git a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
index bd8f1007fe5..748a2ae83a8 100644
--- a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
+++ b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
@@ -102,7 +102,8 @@ public class PluginI implements Ice.Plugin
//
Ice.ObjectPrx locator = _locatorAdapter.addWithUUID(new LocatorI(lookup, locatorRegistryPrx));
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(locator));
+ _locator = Ice.LocatorPrxHelper.uncheckedCast(locator);
+ _communicator.setDefaultLocator(_locator);
_multicastAdapter.activate();
_replyAdapter.activate();
@@ -116,12 +117,17 @@ public class PluginI implements Ice.Plugin
_multicastAdapter.destroy();
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locator))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
private Ice.Communicator _communicator;
private Ice.ObjectAdapter _multicastAdapter;
private Ice.ObjectAdapter _replyAdapter;
private Ice.ObjectAdapter _locatorAdapter;
+ private Ice.LocatorPrx _locator;
private Ice.LocatorPrx _defaultLocator;
}
diff --git a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
index 2ee4d3b1d1d..2b49d63747d 100644
--- a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
+++ b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
@@ -562,7 +562,8 @@ class PluginI implements Plugin
id.category = !instanceName.isEmpty() ? instanceName : java.util.UUID.randomUUID().toString();
_locator = new LocatorI(_name, LookupPrxHelper.uncheckedCast(lookupPrx), properties, instanceName, voidLoc);
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator)));
+ _locatorPrx = Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator));
+ _communicator.setDefaultLocator(_locatorPrx);
Ice.ObjectPrx lookupReply = _replyAdapter.addWithUUID(new LookupReplyI(_locator)).ice_datagram();
_locator.setLookupReply(LookupReplyPrxHelper.uncheckedCast(lookupReply));
@@ -577,7 +578,11 @@ class PluginI implements Plugin
{
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locatorPrx))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
@Override
@@ -592,5 +597,6 @@ class PluginI implements Plugin
private Ice.ObjectAdapter _locatorAdapter;
private Ice.ObjectAdapter _replyAdapter;
private LocatorI _locator;
+ private Ice.LocatorPrx _locatorPrx;
private Ice.LocatorPrx _defaultLocator;
}
diff --git a/java/src/IceDiscovery/src/main/java/com/zeroc/IceDiscovery/PluginI.java b/java/src/IceDiscovery/src/main/java/com/zeroc/IceDiscovery/PluginI.java
index 0f5cbc9806d..bc115950f2d 100644
--- a/java/src/IceDiscovery/src/main/java/com/zeroc/IceDiscovery/PluginI.java
+++ b/java/src/IceDiscovery/src/main/java/com/zeroc/IceDiscovery/PluginI.java
@@ -102,7 +102,8 @@ public class PluginI implements com.zeroc.Ice.Plugin
//
com.zeroc.Ice.ObjectPrx locator = _locatorAdapter.addWithUUID(new LocatorI(lookup, locatorRegistryPrx));
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(com.zeroc.Ice.LocatorPrx.uncheckedCast(locator));
+ _locator = com.zeroc.Ice.LocatorPrx.uncheckedCast(locator);
+ _communicator.setDefaultLocator(_locator);
_multicastAdapter.activate();
_replyAdapter.activate();
@@ -115,12 +116,17 @@ public class PluginI implements com.zeroc.Ice.Plugin
_multicastAdapter.destroy();
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locator))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
private com.zeroc.Ice.Communicator _communicator;
private com.zeroc.Ice.ObjectAdapter _multicastAdapter;
private com.zeroc.Ice.ObjectAdapter _replyAdapter;
private com.zeroc.Ice.ObjectAdapter _locatorAdapter;
+ private com.zeroc.Ice.LocatorPrx _locator;
private com.zeroc.Ice.LocatorPrx _defaultLocator;
}
diff --git a/java/src/IceLocatorDiscovery/src/main/java/com/zeroc/IceLocatorDiscovery/PluginI.java b/java/src/IceLocatorDiscovery/src/main/java/com/zeroc/IceLocatorDiscovery/PluginI.java
index 3251babc78a..61dd6f7cca1 100644
--- a/java/src/IceLocatorDiscovery/src/main/java/com/zeroc/IceLocatorDiscovery/PluginI.java
+++ b/java/src/IceLocatorDiscovery/src/main/java/com/zeroc/IceLocatorDiscovery/PluginI.java
@@ -559,7 +559,8 @@ class PluginI implements Plugin
id.category = !instanceName.isEmpty() ? instanceName : java.util.UUID.randomUUID().toString();
_locator = new LocatorI(_name, LookupPrx.uncheckedCast(lookupPrx), properties, instanceName, voidLoc);
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(com.zeroc.Ice.LocatorPrx.uncheckedCast(_locatorAdapter.addWithUUID(_locator)));
+ _locatorPrx = com.zeroc.Ice.LocatorPrx.uncheckedCast(_locatorAdapter.addWithUUID(_locator));
+ _communicator.setDefaultLocator(_locatorPrx);
com.zeroc.Ice.ObjectPrx lookupReply = _replyAdapter.addWithUUID(new LookupReplyI(_locator)).ice_datagram();
_locator.setLookupReply(LookupReplyPrx.uncheckedCast(lookupReply));
@@ -573,7 +574,11 @@ class PluginI implements Plugin
{
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locatorPrx))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
public List<com.zeroc.Ice.LocatorPrx>
@@ -587,5 +592,6 @@ class PluginI implements Plugin
private com.zeroc.Ice.ObjectAdapter _locatorAdapter;
private com.zeroc.Ice.ObjectAdapter _replyAdapter;
private LocatorI _locator;
+ private com.zeroc.Ice.LocatorPrx _locatorPrx;
private com.zeroc.Ice.LocatorPrx _defaultLocator;
}