diff options
Diffstat (limited to 'java/src/IceInternal/IncomingConnectionFactory.java')
-rw-r--r-- | java/src/IceInternal/IncomingConnectionFactory.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/java/src/IceInternal/IncomingConnectionFactory.java b/java/src/IceInternal/IncomingConnectionFactory.java index a4cacda340e..d2f8fd53e2f 100644 --- a/java/src/IceInternal/IncomingConnectionFactory.java +++ b/java/src/IceInternal/IncomingConnectionFactory.java @@ -174,6 +174,9 @@ public class IncomingConnectionFactory extends EventHandler } _acceptor.close(); + + _finished = true; + notifyAll(); // For waitUntilFinished(). } } @@ -209,6 +212,7 @@ public class IncomingConnectionFactory extends EventHandler _adapter = adapter; _state = StateHolding; _warn = _instance.properties().getPropertyAsInt("Ice.ConnectionWarnings") > 0 ? true : false; + _finished = false; try { @@ -242,6 +246,7 @@ public class IncomingConnectionFactory extends EventHandler throws Throwable { assert(_state == StateClosed); + assert(_finished); // // Destroy the EventHandler's stream, so that its buffer @@ -258,6 +263,21 @@ public class IncomingConnectionFactory extends EventHandler setState(StateClosed); } + public synchronized void + waitUntilFinished() + { + while (!_finished) + { + try + { + wait(); + } + catch (InterruptedException ex) + { + } + } + } + private static final int StateActive = 0; private static final int StateHolding = 1; private static final int StateClosed = 2; @@ -376,4 +396,5 @@ public class IncomingConnectionFactory extends EventHandler private java.util.LinkedList _connections = new java.util.LinkedList(); private int _state; private boolean _warn; + private boolean _finished; } |