diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-10-15 08:20:15 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-10-15 08:20:15 +0200 |
commit | 4c6a4a6e77eeb513e2031912698a1fa839d9065a (patch) | |
tree | fdfad1d1dceb1fcc614da334b7058efc99925703 /java/src/IceInternal/ThreadPool.java | |
parent | ICE-5739 missing AMD test in c++ optional (diff) | |
download | ice-4c6a4a6e77eeb513e2031912698a1fa839d9065a.tar.bz2 ice-4c6a4a6e77eeb513e2031912698a1fa839d9065a.tar.xz ice-4c6a4a6e77eeb513e2031912698a1fa839d9065a.zip |
Fixed ICE-5454: close acceptor on adapter deactivation
Diffstat (limited to 'java/src/IceInternal/ThreadPool.java')
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java index 8b3453980fc..c21305d2395 100644 --- a/java/src/IceInternal/ThreadPool.java +++ b/java/src/IceInternal/ThreadPool.java @@ -30,18 +30,20 @@ public final class ThreadPool static final class FinishedWorkItem implements ThreadPoolWorkItem { public - FinishedWorkItem(EventHandler handler) + FinishedWorkItem(EventHandler handler, boolean close) { _handler = handler; + _close = close; } @Override public void execute(ThreadPoolCurrent current) { - _handler.finished(current); + _handler.finished(current, _close); } private final EventHandler _handler; + private final boolean _close; } static final class JoinThreadWorkItem implements ThreadPoolWorkItem @@ -324,12 +326,13 @@ public final class ThreadPool update(handler, op, SocketOperation.None); } - public synchronized void - finish(EventHandler handler) + public synchronized boolean + finish(EventHandler handler, boolean closeNow) { assert(!_destroyed); - _selector.finish(handler); - _workQueue.queue(new FinishedWorkItem(handler)); + closeNow = _selector.finish(handler, closeNow); + _workQueue.queue(new FinishedWorkItem(handler, !closeNow)); + return closeNow; } public void |