diff options
author | Benoit Foucher <benoit@zeroc.com> | 2008-10-28 15:37:54 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2008-10-28 15:37:54 +0100 |
commit | 4cf71ddedfbcb89f1f8892c87bc6df68f1086c0e (patch) | |
tree | 0eb73fac0730f0a7bb3046e9c3b2cba8a4185654 /java/src/IceInternal/RetryTask.java | |
parent | Locator improvements to improve scalability when receiving many requests (diff) | |
download | ice-4cf71ddedfbcb89f1f8892c87bc6df68f1086c0e.tar.bz2 ice-4cf71ddedfbcb89f1f8892c87bc6df68f1086c0e.tar.xz ice-4cf71ddedfbcb89f1f8892c87bc6df68f1086c0e.zip |
Fixed bug 3513 - AMI retry bug
Diffstat (limited to 'java/src/IceInternal/RetryTask.java')
-rw-r--r-- | java/src/IceInternal/RetryTask.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/java/src/IceInternal/RetryTask.java b/java/src/IceInternal/RetryTask.java new file mode 100644 index 00000000000..5c17c8af621 --- /dev/null +++ b/java/src/IceInternal/RetryTask.java @@ -0,0 +1,44 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceInternal; + +class RetryTask implements TimerTask +{ + RetryTask(RetryQueue queue, OutgoingAsync outAsync) + { + _queue = queue; + _outAsync = outAsync; + } + + public void + runTimerTask() + { + if(_queue.remove(this)) + { + try + { + _outAsync.__send(); + } + catch(Ice.LocalException ex) + { + _outAsync.__releaseCallback(ex); + } + } + } + + public void + destroy() + { + _outAsync.__releaseCallback(new Ice.CommunicatorDestroyedException()); + } + + private final RetryQueue _queue; + private final OutgoingAsync _outAsync; +} |