Mercurial Hosting > luan
annotate src/org/eclipse/jetty/util/thread/Timeout.java @ 868:688b875e18ba
remove ThreadLocalBuffers
| author | Franklin Schmidt <fschmidt@gmail.com> | 
|---|---|
| date | Mon, 03 Oct 2016 19:29:34 -0600 | 
| parents | 8e9db0bbf4f9 | 
| children | c948f674a2d5 | 
| rev | line source | 
|---|---|
| 
802
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
1 // | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
2 // ======================================================================== | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
3 // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
4 // ------------------------------------------------------------------------ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
5 // All rights reserved. This program and the accompanying materials | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
6 // are made available under the terms of the Eclipse Public License v1.0 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
7 // and Apache License v2.0 which accompanies this distribution. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
8 // | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
9 // The Eclipse Public License is available at | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
10 // http://www.eclipse.org/legal/epl-v10.html | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
11 // | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
12 // The Apache License v2.0 is available at | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
13 // http://www.opensource.org/licenses/apache2.0.php | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
14 // | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
15 // You may elect to redistribute this code under either of these licenses. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
16 // ======================================================================== | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
17 // | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
19 package org.eclipse.jetty.util.thread; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
20 | 
| 
820
 
8e9db0bbf4f9
remove org.eclipse.jetty.util.log and upgrade slf4j
 
Franklin Schmidt <fschmidt@gmail.com> 
parents: 
802 
diff
changeset
 | 
21 import org.slf4j.Logger; | 
| 
 
8e9db0bbf4f9
remove org.eclipse.jetty.util.log and upgrade slf4j
 
Franklin Schmidt <fschmidt@gmail.com> 
parents: 
802 
diff
changeset
 | 
22 import org.slf4j.LoggerFactory; | 
| 
802
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
23 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
24 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
25 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
26 /** Timeout queue. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
27 * This class implements a timeout queue for timers that are at least as likely to be cancelled as they are to expire. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
28 * Unlike the util timeout class, the duration of the timeouts is shared by all scheduled tasks and if the duration | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
29 * is changed, this affects all scheduled tasks. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
30 * <p> | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
31 * The nested class Task should be extended by users of this class to obtain call back notification of | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
32 * expires. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
33 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
34 public class Timeout | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
35 { | 
| 
820
 
8e9db0bbf4f9
remove org.eclipse.jetty.util.log and upgrade slf4j
 
Franklin Schmidt <fschmidt@gmail.com> 
parents: 
802 
diff
changeset
 | 
36 private static final Logger LOG = LoggerFactory.getLogger(Timeout.class); | 
| 
802
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
37 private Object _lock; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
38 private long _duration; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
39 private volatile long _now=System.currentTimeMillis(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
40 private Task _head=new Task(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
41 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
42 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
43 public Timeout() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
44 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
45 _lock=new Object(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
46 _head._timeout=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
47 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
48 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
49 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
50 public Timeout(Object lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
51 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
52 _lock=lock; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
53 _head._timeout=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
54 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
55 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
56 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
57 /** | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
58 * @return Returns the duration. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
59 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
60 public long getDuration() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
61 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
62 return _duration; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
63 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
64 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
65 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
66 /** | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
67 * @param duration The duration to set. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
68 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
69 public void setDuration(long duration) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
70 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
71 _duration = duration; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
72 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
73 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
74 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
75 public long setNow() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
76 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
77 return _now=System.currentTimeMillis(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
78 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
79 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
80 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
81 public long getNow() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
82 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
83 return _now; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
84 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
85 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
86 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
87 public void setNow(long now) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
88 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
89 _now=now; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
90 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
91 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
92 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
93 /** Get an expired tasks. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
94 * This is called instead of {@link #tick()} to obtain the next | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
95 * expired Task, but without calling it's {@link Task#expire()} or | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
96 * {@link Task#expired()} methods. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
97 * | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
98 * @return the next expired task or null. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
99 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
100 public Task expired() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
101 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
102 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
103 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
104 long _expiry = _now-_duration; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
105 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
106 if (_head._next!=_head) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
107 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
108 Task task = _head._next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
109 if (task._timestamp>_expiry) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
110 return null; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
111 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
112 task.unlink(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
113 task._expired=true; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
114 return task; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
115 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
116 return null; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
117 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
118 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
119 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
120 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
121 public void tick() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
122 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
123 final long expiry = _now-_duration; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
124 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
125 Task task=null; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
126 while (true) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
127 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
128 try | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
129 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
130 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
131 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
132 task= _head._next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
133 if (task==_head || task._timestamp>expiry) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
134 break; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
135 task.unlink(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
136 task._expired=true; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
137 task.expire(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
138 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
139 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
140 task.expired(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
141 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
142 catch(Throwable th) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
143 { | 
| 
820
 
8e9db0bbf4f9
remove org.eclipse.jetty.util.log and upgrade slf4j
 
Franklin Schmidt <fschmidt@gmail.com> 
parents: 
802 
diff
changeset
 | 
144 LOG.warn("EXCEPTION",th); | 
| 
802
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
145 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
146 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
147 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
148 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
149 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
150 public void tick(long now) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
151 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
152 _now=now; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
153 tick(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
154 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
155 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
156 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
157 public void schedule(Task task) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
158 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
159 schedule(task,0L); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
160 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
161 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
162 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
163 /** | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
164 * @param task | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
165 * @param delay A delay in addition to the default duration of the timeout | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
166 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
167 public void schedule(Task task,long delay) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
168 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
169 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
170 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
171 if (task._timestamp!=0) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
172 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
173 task.unlink(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
174 task._timestamp=0; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
175 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
176 task._timeout=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
177 task._expired=false; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
178 task._delay=delay; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
179 task._timestamp = _now+delay; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
180 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
181 Task last=_head._prev; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
182 while (last!=_head) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
183 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
184 if (last._timestamp <= task._timestamp) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
185 break; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
186 last=last._prev; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
187 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
188 last.link(task); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
189 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
190 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
191 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
192 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
193 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
194 public void cancelAll() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
195 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
196 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
197 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
198 _head._next=_head._prev=_head; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
199 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
200 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
201 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
202 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
203 public boolean isEmpty() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
204 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
205 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
206 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
207 return _head._next==_head; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
208 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
209 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
210 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
211 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
212 public long getTimeToNext() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
213 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
214 synchronized (_lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
215 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
216 if (_head._next==_head) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
217 return -1; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
218 long to_next = _duration+_head._next._timestamp-_now; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
219 return to_next<0?0:to_next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
220 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
221 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
222 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
223 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
224 @Override | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
225 public String toString() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
226 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
227 StringBuffer buf = new StringBuffer(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
228 buf.append(super.toString()); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
229 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
230 Task task = _head._next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
231 while (task!=_head) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
232 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
233 buf.append("-->"); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
234 buf.append(task); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
235 task=task._next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
236 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
237 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
238 return buf.toString(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
239 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
240 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
241 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
242 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
243 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
244 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
245 /** Task. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
246 * The base class for scheduled timeouts. This class should be | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
247 * extended to implement the expire() method, which is called if the | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
248 * timeout expires. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
249 * | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
250 * | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
251 * | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
252 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
253 public static class Task | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
254 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
255 Task _next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
256 Task _prev; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
257 Timeout _timeout; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
258 long _delay; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
259 long _timestamp=0; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
260 boolean _expired=false; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
261 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
262 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
263 protected Task() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
264 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
265 _next=_prev=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
266 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
267 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
268 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
269 public long getTimestamp() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
270 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
271 return _timestamp; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
272 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
273 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
274 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
275 public long getAge() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
276 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
277 final Timeout t = _timeout; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
278 if (t!=null) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
279 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
280 final long now=t._now; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
281 if (now!=0 && _timestamp!=0) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
282 return now-_timestamp; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
283 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
284 return 0; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
285 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
286 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
287 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
288 private void unlink() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
289 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
290 _next._prev=_prev; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
291 _prev._next=_next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
292 _next=_prev=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
293 _expired=false; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
294 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
295 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
296 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
297 private void link(Task task) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
298 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
299 Task next_next = _next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
300 _next._prev=task; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
301 _next=task; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
302 _next._next=next_next; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
303 _next._prev=this; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
304 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
305 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
306 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
307 /** Schedule the task on the given timeout. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
308 * The task exiry will be called after the timeout duration. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
309 * @param timer | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
310 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
311 public void schedule(Timeout timer) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
312 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
313 timer.schedule(this); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
314 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
315 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
316 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
317 /** Schedule the task on the given timeout. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
318 * The task exiry will be called after the timeout duration. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
319 * @param timer | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
320 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
321 public void schedule(Timeout timer, long delay) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
322 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
323 timer.schedule(this,delay); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
324 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
325 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
326 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
327 /** Reschedule the task on the current timeout. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
328 * The task timeout is rescheduled as if it had been cancelled and | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
329 * scheduled on the current timeout. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
330 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
331 public void reschedule() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
332 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
333 Timeout timeout = _timeout; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
334 if (timeout!=null) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
335 timeout.schedule(this,_delay); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
336 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
337 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
338 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
339 /** Cancel the task. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
340 * Remove the task from the timeout. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
341 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
342 public void cancel() | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
343 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
344 Timeout timeout = _timeout; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
345 if (timeout!=null) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
346 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
347 synchronized (timeout._lock) | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
348 { | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
349 unlink(); | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
350 _timestamp=0; | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
351 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
352 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
353 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
354 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
355 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
356 public boolean isExpired() { return _expired; } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
357 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
358 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
359 public boolean isScheduled() { return _next!=this; } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
360 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
361 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
362 /** Expire task. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
363 * This method is called when the timeout expires. It is called | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
364 * in the scope of the synchronize block (on this) that sets | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
365 * the {@link #isExpired()} state to true. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
366 * @see #expired() For an unsynchronized callback. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
367 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
368 protected void expire(){} | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
369 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
370 /* ------------------------------------------------------------ */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
371 /** Expire task. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
372 * This method is called when the timeout expires. It is called | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
373 * outside of any synchronization scope and may be delayed. | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
374 * | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
375 */ | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
376 public void expired(){} | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
377 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
378 } | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
379 | 
| 
 
3428c60d7cfc
replace jetty jars with source
 
Franklin Schmidt <fschmidt@gmail.com> 
parents:  
diff
changeset
 | 
380 } | 
