Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/AsyncContinuation.java @ 934:fe461f7cfc8e
simplify AsyncContinuation
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 09 Oct 2016 21:03:00 -0600 |
parents | c9513d80f305 |
children | aa7dc1802d29 |
comparison
equal
deleted
inserted
replaced
933:c9513d80f305 | 934:fe461f7cfc8e |
---|---|
37 import org.eclipse.jetty.server.handler.ContextHandler; | 37 import org.eclipse.jetty.server.handler.ContextHandler; |
38 import org.eclipse.jetty.server.handler.ContextHandler.Context; | 38 import org.eclipse.jetty.server.handler.ContextHandler.Context; |
39 import org.eclipse.jetty.util.URIUtil; | 39 import org.eclipse.jetty.util.URIUtil; |
40 import org.slf4j.Logger; | 40 import org.slf4j.Logger; |
41 import org.slf4j.LoggerFactory; | 41 import org.slf4j.LoggerFactory; |
42 import org.eclipse.jetty.util.thread.Timeout; | |
43 | 42 |
44 /* ------------------------------------------------------------ */ | 43 /* ------------------------------------------------------------ */ |
45 /** Implementation of Continuation interfaces | 44 /** Implementation of Continuation interfaces |
46 * | 45 * |
47 */ | 46 */ |
74 private List<AsyncListener> _asyncListeners; | 73 private List<AsyncListener> _asyncListeners; |
75 private List<ContinuationListener> _continuationListeners; | 74 private List<ContinuationListener> _continuationListeners; |
76 | 75 |
77 /* ------------------------------------------------------------ */ | 76 /* ------------------------------------------------------------ */ |
78 private int _state; | 77 private int _state; |
79 private volatile boolean _responseWrapped; | |
80 private long _timeoutMs=DEFAULT_TIMEOUT; | |
81 private volatile long _expireAt; | 78 private volatile long _expireAt; |
82 | 79 |
83 /* ------------------------------------------------------------ */ | |
84 protected AsyncContinuation() | 80 protected AsyncContinuation() |
85 { | 81 { |
86 _state=__IDLE; | 82 _state=__IDLE; |
87 } | 83 } |
88 | 84 |
89 /* ------------------------------------------------------------ */ | 85 protected synchronized void setConnection(final AbstractHttpConnection connection) |
90 protected void setConnection(final AbstractHttpConnection connection) | 86 { |
91 { | 87 _connection=connection; |
92 synchronized(this) | |
93 { | |
94 _connection=connection; | |
95 } | |
96 } | 88 } |
97 | 89 |
98 /* ------------------------------------------------------------ */ | 90 /* ------------------------------------------------------------ */ |
99 public void addListener(AsyncListener listener) | 91 public void addListener(AsyncListener listener) |
100 { | 92 { |
127 _continuationListeners=new ArrayList<ContinuationListener>(); | 119 _continuationListeners=new ArrayList<ContinuationListener>(); |
128 _continuationListeners.add(listener); | 120 _continuationListeners.add(listener); |
129 } | 121 } |
130 } | 122 } |
131 | 123 |
132 /* ------------------------------------------------------------ */ | 124 |
133 public void setTimeout(long ms) | 125 |
134 { | |
135 synchronized(this) | |
136 { | |
137 _timeoutMs=ms; | |
138 } | |
139 } | |
140 | |
141 /* ------------------------------------------------------------ */ | |
142 public long getTimeout() | |
143 { | |
144 synchronized(this) | |
145 { | |
146 return _timeoutMs; | |
147 } | |
148 } | |
149 | |
150 /* ------------------------------------------------------------ */ | |
151 /** | |
152 * @see org.eclipse.jetty.continuation.Continuation#keepWrappers() | |
153 */ | |
154 | |
155 /* ------------------------------------------------------------ */ | |
156 /** | |
157 * @see org.eclipse.jetty.continuation.Continuation#isResponseWrapped() | |
158 */ | |
159 public boolean isResponseWrapped() | |
160 { | |
161 return _responseWrapped; | |
162 } | |
163 | |
164 /* ------------------------------------------------------------ */ | |
165 /* (non-Javadoc) | |
166 * @see javax.servlet.ServletRequest#isSuspended() | |
167 */ | |
168 public boolean isSuspended() | |
169 { | |
170 synchronized(this) | |
171 { | |
172 switch(_state) | |
173 { | |
174 default: | |
175 return false; | |
176 } | |
177 } | |
178 } | |
179 | |
180 /* ------------------------------------------------------------ */ | |
181 public boolean isSuspending() | |
182 { | |
183 synchronized(this) | |
184 { | |
185 switch(_state) | |
186 { | |
187 default: | |
188 return false; | |
189 } | |
190 } | |
191 } | |
192 | |
193 /* ------------------------------------------------------------ */ | |
194 public boolean isDispatchable() | |
195 { | |
196 synchronized(this) | |
197 { | |
198 switch(_state) | |
199 { | |
200 default: | |
201 return false; | |
202 } | |
203 } | |
204 } | |
205 | |
206 /* ------------------------------------------------------------ */ | |
207 @Override | 126 @Override |
208 public String toString() | 127 public String toString() |
209 { | 128 { |
210 synchronized (this) | 129 synchronized (this) |
211 { | 130 { |
212 return super.toString()+"@"+getStatusString(); | 131 return super.toString()+"@"+getStatusString(); |
213 } | 132 } |
214 } | 133 } |
215 | 134 |
216 /* ------------------------------------------------------------ */ | |
217 public String getStatusString() | 135 public String getStatusString() |
218 { | 136 { |
219 synchronized (this) | 137 synchronized (this) |
220 { | 138 { |
221 return | 139 return |
261 default: | 179 default: |
262 throw new IllegalStateException(this.getStatusString()); | 180 throw new IllegalStateException(this.getStatusString()); |
263 } | 181 } |
264 } | 182 } |
265 | 183 |
266 public void dispatch() | 184 |
267 { | |
268 throw new UnsupportedOperationException(); | |
269 } | |
270 | |
271 /* ------------------------------------------------------------ */ | |
272 protected void expired() | |
273 { | |
274 } | |
275 | |
276 /* ------------------------------------------------------------ */ | |
277 /* (non-Javadoc) | |
278 * @see javax.servlet.ServletRequest#complete() | |
279 */ | |
280 public void complete() | |
281 { | |
282 // just like resume, except don't set _resumed=true; | |
283 boolean dispatch=false; | |
284 synchronized (this) | |
285 { | |
286 switch(_state) | |
287 { | |
288 case __DISPATCHED: | |
289 throw new IllegalStateException(this.getStatusString()); | |
290 | |
291 default: | |
292 throw new IllegalStateException(this.getStatusString()); | |
293 } | |
294 } | |
295 } | |
296 | |
297 /* ------------------------------------------------------------ */ | |
298 /* (non-Javadoc) | |
299 * @see javax.servlet.ServletRequest#complete() | |
300 */ | |
301 public void errorComplete() | |
302 { | |
303 // just like complete except can overrule a prior dispatch call; | |
304 synchronized (this) | |
305 { | |
306 switch(_state) | |
307 { | |
308 default: | |
309 throw new IllegalStateException(this.getStatusString()); | |
310 } | |
311 } | |
312 } | |
313 | |
314 /* ------------------------------------------------------------ */ | 185 /* ------------------------------------------------------------ */ |
315 /* (non-Javadoc) | 186 /* (non-Javadoc) |
316 * @see javax.servlet.ServletRequest#complete() | 187 * @see javax.servlet.ServletRequest#complete() |
317 */ | 188 */ |
318 protected void doComplete(Throwable ex) | 189 protected void doComplete(Throwable ex) |
381 case __DISPATCHED: | 252 case __DISPATCHED: |
382 throw new IllegalStateException(getStatusString()); | 253 throw new IllegalStateException(getStatusString()); |
383 default: | 254 default: |
384 _state=__IDLE; | 255 _state=__IDLE; |
385 } | 256 } |
386 _responseWrapped=false; | |
387 cancelTimeout(); | 257 cancelTimeout(); |
388 _timeoutMs=DEFAULT_TIMEOUT; | |
389 _continuationListeners=null; | 258 _continuationListeners=null; |
390 } | 259 } |
391 } | 260 } |
392 | 261 |
393 /* ------------------------------------------------------------ */ | 262 /* ------------------------------------------------------------ */ |
405 else | 274 else |
406 { | 275 { |
407 } | 276 } |
408 } | 277 } |
409 | 278 |
410 boolean isUncompleted() | 279 synchronized boolean isUncompleted() |
411 { | 280 { |
412 synchronized (this) | 281 return _state==__UNCOMPLETED; |
413 { | |
414 return _state==__UNCOMPLETED; | |
415 } | |
416 } | 282 } |
417 | 283 |
418 public boolean isComplete() | 284 public synchronized boolean isComplete() |
419 { | 285 { |
420 synchronized (this) | 286 return _state==__COMPLETED; |
421 { | |
422 return _state==__COMPLETED; | |
423 } | |
424 } | |
425 | |
426 public void dispatch(ServletContext context, String path) | |
427 { | |
428 throw new UnsupportedOperationException(); | |
429 } | |
430 | |
431 public void dispatch(String path) | |
432 { | |
433 throw new UnsupportedOperationException(); | |
434 } | 287 } |
435 | 288 |
436 /* ------------------------------------------------------------ */ | 289 /* ------------------------------------------------------------ */ |
437 public Request getBaseRequest() | 290 public Request getBaseRequest() |
438 { | 291 { |
449 public ServletResponse getResponse() | 302 public ServletResponse getResponse() |
450 { | 303 { |
451 return _connection.getResponse(); | 304 return _connection.getResponse(); |
452 } | 305 } |
453 | 306 |
454 /* ------------------------------------------------------------ */ | |
455 public void start(final Runnable run) | |
456 { | |
457 } | |
458 | |
459 /* ------------------------------------------------------------ */ | |
460 public boolean hasOriginalRequestAndResponse() | |
461 { | |
462 synchronized (this) | |
463 { | |
464 return false; | |
465 } | |
466 } | |
467 | |
468 /* ------------------------------------------------------------ */ | |
469 public ContextHandler getContextHandler() | |
470 { | |
471 return null; | |
472 } | |
473 | |
474 | 307 |
475 /* ------------------------------------------------------------ */ | 308 /* ------------------------------------------------------------ */ |
476 /** | 309 /** |
477 * @see org.eclipse.jetty.continuation.Continuation#getServletResponse() | 310 * @see org.eclipse.jetty.continuation.Continuation#getServletResponse() |
478 */ | 311 */ |