summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2003-01-29 18:14:21 +0000
committerMarc Laukien <marc@zeroc.com>2003-01-29 18:14:21 +0000
commit61ef15681399c585f516ecfcacf068614c14ccfb (patch)
tree07a3ac28ac171a08bf14d94c881b4a3bfe301180 /java/src
parentfix (diff)
downloadice-61ef15681399c585f516ecfcacf068614c14ccfb.tar.bz2
ice-61ef15681399c585f516ecfcacf068614c14ccfb.tar.xz
ice-61ef15681399c585f516ecfcacf068614c14ccfb.zip
fixes
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/CommunicatorI.java31
-rw-r--r--java/src/Ice/ObjectAdapterI.java39
-rw-r--r--java/src/IceInternal/Connection.java2
-rw-r--r--java/src/IceInternal/ConnectionMonitor.java17
-rw-r--r--java/src/IceInternal/IncomingConnectionFactory.java12
-rw-r--r--java/src/IceInternal/ObjectAdapterFactory.java4
-rw-r--r--java/src/IceInternal/OutgoingConnectionFactory.java23
-rw-r--r--java/src/IceInternal/ThreadPool.java2
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);
}