diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java b/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java index 685ab0744ed..6b96a08707a 100644 --- a/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java +++ b/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java @@ -11,6 +11,8 @@ package IceInternal; import Ice.ConnectionI; +import java.util.concurrent.Callable; + public class ConnectRequestHandler implements RequestHandler, Reference.GetConnectionCallback, RouterInfo.AddProxyCallback { @@ -389,6 +391,27 @@ public class ConnectRequestHandler private void flushRequests() { + if(_reference.getInstance().queueRequests()) + { + _reference.getInstance().getQueueExecutor().executeNoThrow(new Callable<Void>() + { + @Override + public Void call() throws Exception + { + flushRequestsImpl(); + return null; + } + }); + } + else + { + flushRequestsImpl(); + } + } + + private void + flushRequestsImpl() + { synchronized(this) { assert(_connection != null && !_initialized); @@ -402,7 +425,6 @@ public class ConnectRequestHandler _flushing = true; } - final java.util.List<OutgoingAsyncBase> sentCallbacks = new java.util.ArrayList<OutgoingAsyncBase>(); java.util.Iterator<Request> p = _requests.iterator(); // _requests is immutable when _flushing = true Ice.LocalException exception = null; while(p.hasNext()) |