KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ubermq > kernel > overflow > KeepTrying


1 package com.ubermq.kernel.overflow;
2
3 import com.ubermq.kernel.IOverflowHandler;
4 import com.ubermq.kernel.IDatagram;
5 import java.nio.*;
6
7 /**
8  * Handles overflows by retrying a pre-determined
9  * number of times, and delaying a fixed period
10  * between them.
11  */

12 public class KeepTrying
13     extends AbstractOverflowHandler
14 {
15     private final int nRetries;
16     private final long delay;
17
18     public KeepTrying(int nRetries,
19                       long delay)
20     {
21         super();
22         this.nRetries = nRetries;
23         this.delay = delay;
24     }
25
26     protected int doOverflow()
27     {
28         if (nRetries > 0)
29         {
30             try
31             {
32                 Thread.sleep(delay);
33             }
34             catch (InterruptedException JavaDoc e) {}
35             return IOverflowHandler.ACTION_RETRY;
36         }
37         else
38         {
39             return IOverflowHandler.ACTION_FAIL;
40         }
41     }
42
43     /**
44      * Produces a new overflow handler to be used if the
45      * recommended retried output attempt fails again.
46      * This can be return null if the overflow()
47      * method never returns true.
48      */

49     public IOverflowHandler getRetryHandler()
50     {
51         return new KeepTrying(nRetries - 1,
52                               delay);
53     }
54
55 }
56
Popular Tags