Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/AsyncContinuation.java @ 936:237ace6e8bc2
simplify AsyncContinuation
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Sun, 09 Oct 2016 21:35:26 -0600 |
| parents | aa7dc1802d29 |
| children | 0541b6034003 |
comparison
equal
deleted
inserted
replaced
| 935:aa7dc1802d29 | 936:237ace6e8bc2 |
|---|---|
| 16 // ======================================================================== | 16 // ======================================================================== |
| 17 // | 17 // |
| 18 | 18 |
| 19 package org.eclipse.jetty.server; | 19 package org.eclipse.jetty.server; |
| 20 | 20 |
| 21 import javax.servlet.RequestDispatcher; | |
| 22 import javax.servlet.ServletException; | |
| 23 | |
| 24 import java.util.ArrayList; | |
| 25 import java.util.List; | |
| 26 | |
| 27 import javax.servlet.ServletContext; | |
| 28 import javax.servlet.ServletRequest; | |
| 29 import javax.servlet.ServletResponse; | |
| 30 import javax.servlet.http.HttpServletRequest; | |
| 31 | |
| 32 import org.eclipse.jetty.continuation.Continuation; | 21 import org.eclipse.jetty.continuation.Continuation; |
| 33 import org.eclipse.jetty.io.AsyncEndPoint; | |
| 34 import org.eclipse.jetty.io.EndPoint; | 22 import org.eclipse.jetty.io.EndPoint; |
| 35 import org.eclipse.jetty.server.handler.ContextHandler; | |
| 36 import org.eclipse.jetty.server.handler.ContextHandler.Context; | |
| 37 import org.eclipse.jetty.util.URIUtil; | |
| 38 import org.slf4j.Logger; | 23 import org.slf4j.Logger; |
| 39 import org.slf4j.LoggerFactory; | 24 import org.slf4j.LoggerFactory; |
| 25 | |
| 40 | 26 |
| 41 /* ------------------------------------------------------------ */ | 27 /* ------------------------------------------------------------ */ |
| 42 /** Implementation of Continuation interfaces | 28 /** Implementation of Continuation interfaces |
| 43 * | 29 * |
| 44 */ | 30 */ |
| 69 /* ------------------------------------------------------------ */ | 55 /* ------------------------------------------------------------ */ |
| 70 protected AbstractHttpConnection _connection; | 56 protected AbstractHttpConnection _connection; |
| 71 | 57 |
| 72 /* ------------------------------------------------------------ */ | 58 /* ------------------------------------------------------------ */ |
| 73 private int _state; | 59 private int _state; |
| 74 private volatile long _expireAt; | |
| 75 | 60 |
| 76 AsyncContinuation() | 61 AsyncContinuation() |
| 77 { | 62 { |
| 78 _state=__IDLE; | 63 _state=__IDLE; |
| 79 } | 64 } |
| 83 _connection=connection; | 68 _connection=connection; |
| 84 } | 69 } |
| 85 | 70 |
| 86 | 71 |
| 87 @Override | 72 @Override |
| 88 public String toString() | 73 public synchronized String toString() |
| 89 { | 74 { |
| 90 synchronized (this) | 75 return super.toString()+"@"+getStatusString(); |
| 91 { | |
| 92 return super.toString()+"@"+getStatusString(); | |
| 93 } | |
| 94 } | 76 } |
| 95 | 77 |
| 96 public String getStatusString() | 78 private synchronized String getStatusString() |
| 97 { | 79 { |
| 98 synchronized (this) | 80 return |
| 99 { | 81 ((_state==__IDLE)?"IDLE": |
| 100 return | 82 (_state==__DISPATCHED)?"DISPATCHED": |
| 101 ((_state==__IDLE)?"IDLE": | 83 (_state==__UNCOMPLETED)?"UNCOMPLETED": |
| 102 (_state==__DISPATCHED)?"DISPATCHED": | 84 (_state==__COMPLETED)?"COMPLETE": |
| 103 (_state==__UNCOMPLETED)?"UNCOMPLETED": | 85 ("UNKNOWN?"+_state)); |
| 104 (_state==__COMPLETED)?"COMPLETE": | |
| 105 ("UNKNOWN?"+_state)); | |
| 106 } | |
| 107 } | 86 } |
| 108 | 87 |
| 109 protected synchronized void handling() | 88 protected synchronized void handling() |
| 110 { | 89 { |
| 111 switch(_state) | 90 switch(_state) |
| 164 _state=__IDLE; | 143 _state=__IDLE; |
| 165 } | 144 } |
| 166 cancelTimeout(); | 145 cancelTimeout(); |
| 167 } | 146 } |
| 168 | 147 |
| 169 /* ------------------------------------------------------------ */ | 148 private void cancelTimeout() |
| 170 protected void cancelTimeout() | |
| 171 { | 149 { |
| 172 EndPoint endp=_connection.getEndPoint(); | 150 EndPoint endp=_connection.getEndPoint(); |
| 173 if (endp.isBlocking()) | 151 if (endp.isBlocking()) |
| 174 { | 152 { |
| 175 synchronized(this) | 153 synchronized(this) |
| 176 { | 154 { |
| 177 _expireAt=0; | |
| 178 this.notifyAll(); | 155 this.notifyAll(); |
| 179 } | 156 } |
| 180 } | |
| 181 else | |
| 182 { | |
| 183 } | 157 } |
| 184 } | 158 } |
| 185 | 159 |
| 186 synchronized boolean isUncompleted() | 160 synchronized boolean isUncompleted() |
| 187 { | 161 { |
| 188 return _state==__UNCOMPLETED; | 162 return _state==__UNCOMPLETED; |
| 189 } | 163 } |
| 190 | |
| 191 public synchronized boolean isComplete() | |
| 192 { | |
| 193 return _state==__COMPLETED; | |
| 194 } | |
| 195 | |
| 196 /* ------------------------------------------------------------ */ | |
| 197 public Request getBaseRequest() | |
| 198 { | |
| 199 return _connection.getRequest(); | |
| 200 } | |
| 201 | |
| 202 /* ------------------------------------------------------------ */ | |
| 203 public ServletRequest getRequest() | |
| 204 { | |
| 205 return _connection.getRequest(); | |
| 206 } | |
| 207 | |
| 208 /* ------------------------------------------------------------ */ | |
| 209 public ServletResponse getResponse() | |
| 210 { | |
| 211 return _connection.getResponse(); | |
| 212 } | |
| 213 | |
| 214 | |
| 215 /* ------------------------------------------------------------ */ | |
| 216 /** | |
| 217 * @see org.eclipse.jetty.continuation.Continuation#getServletResponse() | |
| 218 */ | |
| 219 public ServletResponse getServletResponse() | |
| 220 { | |
| 221 return _connection.getResponse(); | |
| 222 } | |
| 223 | |
| 224 /* ------------------------------------------------------------ */ | |
| 225 /** | |
| 226 * @see org.eclipse.jetty.continuation.Continuation#getAttribute(java.lang.String) | |
| 227 */ | |
| 228 public Object getAttribute(String name) | |
| 229 { | |
| 230 return _connection.getRequest().getAttribute(name); | |
| 231 } | |
| 232 | |
| 233 /* ------------------------------------------------------------ */ | |
| 234 /** | |
| 235 * @see org.eclipse.jetty.continuation.Continuation#removeAttribute(java.lang.String) | |
| 236 */ | |
| 237 public void removeAttribute(String name) | |
| 238 { | |
| 239 _connection.getRequest().removeAttribute(name); | |
| 240 } | |
| 241 | |
| 242 /* ------------------------------------------------------------ */ | |
| 243 /** | |
| 244 * @see org.eclipse.jetty.continuation.Continuation#setAttribute(java.lang.String, java.lang.Object) | |
| 245 */ | |
| 246 public void setAttribute(String name, Object attribute) | |
| 247 { | |
| 248 _connection.getRequest().setAttribute(name,attribute); | |
| 249 } | |
| 250 | |
| 251 } | 164 } |
