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/RetryQueue.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/RetryQueue.java')
-rw-r--r-- | java/src/IceInternal/RetryQueue.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/java/src/IceInternal/RetryQueue.java b/java/src/IceInternal/RetryQueue.java new file mode 100644 index 00000000000..0e0065ab2df --- /dev/null +++ b/java/src/IceInternal/RetryQueue.java @@ -0,0 +1,49 @@ +// ********************************************************************** +// +// 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; + +public class RetryQueue +{ + RetryQueue(Instance instance) + { + _instance = instance; + } + + synchronized public void + add(OutgoingAsync outAsync, int interval) + { + RetryTask task = new RetryTask(this, outAsync); + _instance.timer().schedule(task, interval); + _requests.add(task); + } + + synchronized public void + destroy() + { + java.util.Iterator<RetryTask> p = _requests.iterator(); + while(p.hasNext()) + { + RetryTask task = p.next(); + _instance.timer().cancel(task); + task.destroy(); + } + _requests.clear(); + } + + synchronized boolean + remove(RetryTask task) + { + return _requests.remove(task); + } + + final private Instance _instance; + final private java.util.HashSet<RetryTask> _requests = new java.util.HashSet<RetryTask>(); +}; + |