diff options
author | Marc Laukien <marc@zeroc.com> | 2003-01-29 18:14:21 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2003-01-29 18:14:21 +0000 |
commit | 61ef15681399c585f516ecfcacf068614c14ccfb (patch) | |
tree | 07a3ac28ac171a08bf14d94c881b4a3bfe301180 /java/src | |
parent | fix (diff) | |
download | ice-61ef15681399c585f516ecfcacf068614c14ccfb.tar.bz2 ice-61ef15681399c585f516ecfcacf068614c14ccfb.tar.xz ice-61ef15681399c585f516ecfcacf068614c14ccfb.zip |
fixes
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/CommunicatorI.java | 31 | ||||
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 39 | ||||
-rw-r--r-- | java/src/IceInternal/Connection.java | 2 | ||||
-rw-r--r-- | java/src/IceInternal/ConnectionMonitor.java | 17 | ||||
-rw-r--r-- | java/src/IceInternal/IncomingConnectionFactory.java | 12 | ||||
-rw-r--r-- | java/src/IceInternal/ObjectAdapterFactory.java | 4 | ||||
-rw-r--r-- | java/src/IceInternal/OutgoingConnectionFactory.java | 23 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 2 |
8 files changed, 57 insertions, 73 deletions
diff --git a/java/src/Ice/CommunicatorI.java b/java/src/Ice/CommunicatorI.java index d090fb1cdda..859fc9b1f2c 100644 --- a/java/src/Ice/CommunicatorI.java +++ b/java/src/Ice/CommunicatorI.java @@ -115,36 +115,7 @@ final class CommunicatorI extends LocalObjectImpl implements Communicator throw new CommunicatorDestroyedException(); } - ObjectAdapter adapter; - - if(name.length() == 0) - { - adapter = _instance.objectAdapterFactory().createObjectAdapter("", "", ""); - } - else - { - String id = _instance.properties().getProperty(name + ".AdapterId"); - - String endpts = _instance.properties().getProperty(name + ".Endpoints"); - - adapter = _instance.objectAdapterFactory().createObjectAdapter(name, endpts, id); - - String router = _instance.properties().getProperty(name + ".Router"); - if(router.length() > 0) - { - adapter.addRouter(RouterPrxHelper.uncheckedCast(_instance.proxyFactory().stringToProxy(router))); - } - - String locator = _instance.properties().getProperty(name + ".Locator"); - if(locator.length() > 0) - { - adapter.setLocator(LocatorPrxHelper.uncheckedCast(_instance.proxyFactory().stringToProxy(locator))); - } - else - { - adapter.setLocator(_instance.referenceFactory().getDefaultLocator()); - } - } + ObjectAdapter adapter = _instance.objectAdapterFactory().createObjectAdapter(name); if(_serverThreadPool == null) // Lazy initialization of _serverThreadPool. { diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index afc0d5120ea..32e3395a8f8 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -526,30 +526,30 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt // Only for use by IceInternal.ObjectAdapterFactory // public - ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, String name, String endpts, String id) + ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, String name) { _instance = instance; _communicator = communicator; _printAdapterReadyDone = false; _name = name; - _id = id; + _id = instance.properties().getProperty(name + ".AdapterId"); _logger = instance.logger(); _directCount = 0; _waitForDeactivate = false; - String s = endpts.toLowerCase(); - - int beg = 0; - int end; - try { + String endpts = _instance.properties().getProperty(name + ".Endpoints").toLowerCase(); + + int beg = 0; + int end; + while(true) { - end = s.indexOf(':', beg); + end = endpts.indexOf(':', beg); if(end == -1) { - end = s.length(); + end = endpts.length(); } if(end == beg) @@ -557,14 +557,14 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt break; } - String es = s.substring(beg, end); + String s = endpts.substring(beg, end); // // Don't store the endpoint in the adapter. The Connection // might change it, for example, to fill in the real port // number if a zero port number is given. // - IceInternal.Endpoint endp = instance.endpointFactoryManager().create(es); + IceInternal.Endpoint endp = instance.endpointFactoryManager().create(s); _incomingConnectionFactories.add(new IceInternal.IncomingConnectionFactory(instance, endp, this)); if(end == s.length()) @@ -574,10 +574,27 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt beg = end + 1; } + + String router = _instance.properties().getProperty(name + ".Router"); + if(router.length() > 0) + { + addRouter(RouterPrxHelper.uncheckedCast(_instance.proxyFactory().stringToProxy(router))); + } + + String locator = _instance.properties().getProperty(name + ".Locator"); + if(locator.length() > 0) + { + setLocator(LocatorPrxHelper.uncheckedCast(_instance.proxyFactory().stringToProxy(locator))); + } + else + { + setLocator(_instance.referenceFactory().getDefaultLocator()); + } } catch(LocalException ex) { deactivate(); + waitForDeactivate(); throw ex; } } diff --git a/java/src/IceInternal/Connection.java b/java/src/IceInternal/Connection.java index 86d78b88ec4..a19a034bf58 100644 --- a/java/src/IceInternal/Connection.java +++ b/java/src/IceInternal/Connection.java @@ -1113,7 +1113,7 @@ public final class Connection extends EventHandler { // // If we are registered with the thread pool, we - // unregister. finish() will then do the close. + // unregister. finished() will then do the close. // unregisterWithPool(); } diff --git a/java/src/IceInternal/ConnectionMonitor.java b/java/src/IceInternal/ConnectionMonitor.java index 153e47f0261..f4d76fa18ea 100644 --- a/java/src/IceInternal/ConnectionMonitor.java +++ b/java/src/IceInternal/ConnectionMonitor.java @@ -21,10 +21,7 @@ public class ConnectionMonitor extends Thread { synchronized(this) { - if(_instance == null) - { - return; - } + assert(_instance != null); _instance = null; _connections.clear(); @@ -49,22 +46,14 @@ public class ConnectionMonitor extends Thread public synchronized void add(Connection connection) { - if(_instance == null) - { - throw new Ice.CommunicatorDestroyedException(); - } - + assert(_instance != null); _connections.add(connection); } public synchronized void remove(Connection connection) { - if(_instance == null) - { - throw new Ice.CommunicatorDestroyedException(); - } - + assert(_instance != null); _connections.remove(connection); } diff --git a/java/src/IceInternal/IncomingConnectionFactory.java b/java/src/IceInternal/IncomingConnectionFactory.java index b241ed6d9f2..de90fa5c577 100644 --- a/java/src/IceInternal/IncomingConnectionFactory.java +++ b/java/src/IceInternal/IncomingConnectionFactory.java @@ -220,15 +220,15 @@ public class IncomingConnectionFactory extends EventHandler _connections.add(connection); } + assert(connection != null); + // // We validate and activate outside the thread // synchronization, to not block the factory. // try { - assert(connection != null); connection.validate(); - connection.activate(); // The factory must be active at this point, so we activate the connection, too. } catch(Ice.LocalException ex) { @@ -239,6 +239,12 @@ public class IncomingConnectionFactory extends EventHandler // connection object code. // } + + // + // The factory must be active at this point, so we activate + // the connection, too. + // + connection.activate(); } public synchronized void @@ -303,7 +309,7 @@ public class IncomingConnectionFactory extends EventHandler Connection connection = new Connection(_instance, _transceiver, _endpoint, _adapter); connection.validate(); _connections.add(connection); - } + } else { h.value = _endpoint; diff --git a/java/src/IceInternal/ObjectAdapterFactory.java b/java/src/IceInternal/ObjectAdapterFactory.java index 4b9d03074b0..3718b63d55d 100644 --- a/java/src/IceInternal/ObjectAdapterFactory.java +++ b/java/src/IceInternal/ObjectAdapterFactory.java @@ -103,7 +103,7 @@ public final class ObjectAdapterFactory } public synchronized Ice.ObjectAdapter - createObjectAdapter(String name, String endpts, String id) + createObjectAdapter(String name) { if(_instance == null) { @@ -116,7 +116,7 @@ public final class ObjectAdapterFactory return adapter; } - adapter = new Ice.ObjectAdapterI(_instance, _communicator, name, endpts, id); + adapter = new Ice.ObjectAdapterI(_instance, _communicator, name); _adapters.put(name, adapter); return adapter; } diff --git a/java/src/IceInternal/OutgoingConnectionFactory.java b/java/src/IceInternal/OutgoingConnectionFactory.java index 322fb9fbd4d..a3daad13e26 100644 --- a/java/src/IceInternal/OutgoingConnectionFactory.java +++ b/java/src/IceInternal/OutgoingConnectionFactory.java @@ -40,7 +40,7 @@ public class OutgoingConnectionFactory // // First we wait until the factory is destroyed. // - while(!_destroyed) + while(!_destroyed || !_pending.isEmpty()) { try { @@ -217,7 +217,6 @@ public class OutgoingConnectionFactory } connection = new Connection(_instance, transceiver, endpoint, null); connection.validate(); - connection.activate(); break; } catch(Ice.LocalException ex) @@ -245,16 +244,6 @@ public class OutgoingConnectionFactory synchronized(this) { - if(_destroyed) - { - if(connection != null) - { - connection.destroy(Connection.CommunicatorDestroyed); - } - - throw new Ice.CommunicatorDestroyedException(); - } - // // Signal other threads that we are done with trying to // establish connections to our endpoints. @@ -273,6 +262,16 @@ public class OutgoingConnectionFactory else { _connections.put(connection.endpoint(), connection); + + if(_destroyed) + { + connection.destroy(Connection.CommunicatorDestroyed); + throw new Ice.CommunicatorDestroyedException(); + } + else + { + connection.activate(); + } } } diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java index fb020d21a29..4374d3067ab 100644 --- a/java/src/IceInternal/ThreadPool.java +++ b/java/src/IceInternal/ThreadPool.java @@ -31,6 +31,7 @@ public final class ThreadPool { trace("adding handler of type " + handler.getClass().getName() + " for channel " + fd); } + assert(!_destroyed); _changes.add(new FdHandlerPair(fd, handler)); setInterrupt(0); } @@ -61,6 +62,7 @@ public final class ThreadPool } } + assert(!_destroyed); _changes.add(new FdHandlerPair(fd, null)); setInterrupt(0); } |