Mercurial Hosting > luan
comparison src/org/eclipse/jetty/io/ByteArrayEndPoint.java @ 909:c60c1adfac3e
simplify connectors
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 08 Oct 2016 21:15:28 -0600 |
parents | 3428c60d7cfc |
children |
comparison
equal
deleted
inserted
replaced
908:e003b20780c4 | 909:c60c1adfac3e |
---|---|
27 * | 27 * |
28 * | 28 * |
29 */ | 29 */ |
30 public class ByteArrayEndPoint implements ConnectedEndPoint | 30 public class ByteArrayEndPoint implements ConnectedEndPoint |
31 { | 31 { |
32 protected byte[] _inBytes; | 32 protected byte[] _inBytes; |
33 protected ByteArrayBuffer _in; | 33 protected ByteArrayBuffer _in; |
34 protected ByteArrayBuffer _out; | 34 protected ByteArrayBuffer _out; |
35 protected boolean _closed; | 35 protected boolean _closed; |
36 protected boolean _nonBlocking; | 36 protected boolean _nonBlocking; |
37 protected boolean _growOutput; | 37 protected boolean _growOutput; |
38 protected Connection _connection; | 38 protected Connection _connection; |
39 protected int _maxIdleTime; | 39 protected int _maxIdleTime; |
40 | 40 |
41 | 41 |
42 /* ------------------------------------------------------------ */ | 42 /* ------------------------------------------------------------ */ |
43 /** | 43 /** |
44 * | 44 * |
45 */ | 45 */ |
46 public ByteArrayEndPoint() | 46 public ByteArrayEndPoint() |
47 { | 47 { |
48 } | 48 } |
49 | 49 |
50 /* ------------------------------------------------------------ */ | 50 /* ------------------------------------------------------------ */ |
51 /** | 51 /** |
52 * @see org.eclipse.jetty.io.ConnectedEndPoint#getConnection() | 52 * @see org.eclipse.jetty.io.ConnectedEndPoint#getConnection() |
53 */ | 53 */ |
54 public Connection getConnection() | 54 public Connection getConnection() |
55 { | 55 { |
56 return _connection; | 56 return _connection; |
57 } | 57 } |
58 | 58 |
59 /* ------------------------------------------------------------ */ | 59 /* ------------------------------------------------------------ */ |
60 /** | 60 /** |
61 * @see org.eclipse.jetty.io.ConnectedEndPoint#setConnection(org.eclipse.jetty.io.Connection) | 61 * @see org.eclipse.jetty.io.ConnectedEndPoint#setConnection(org.eclipse.jetty.io.Connection) |
62 */ | 62 */ |
63 public void setConnection(Connection connection) | 63 public void setConnection(Connection connection) |
64 { | 64 { |
65 _connection=connection; | 65 _connection=connection; |
66 } | 66 } |
67 | 67 |
68 /* ------------------------------------------------------------ */ | 68 /* ------------------------------------------------------------ */ |
69 /** | 69 /** |
70 * @return the nonBlocking | 70 * @return the nonBlocking |
71 */ | 71 */ |
72 public boolean isNonBlocking() | 72 public boolean isNonBlocking() |
73 { | 73 { |
74 return _nonBlocking; | 74 return _nonBlocking; |
75 } | 75 } |
76 | 76 |
77 /* ------------------------------------------------------------ */ | 77 /* ------------------------------------------------------------ */ |
78 /** | 78 /** |
79 * @param nonBlocking the nonBlocking to set | 79 * @param nonBlocking the nonBlocking to set |
80 */ | 80 */ |
81 public void setNonBlocking(boolean nonBlocking) | 81 public void setNonBlocking(boolean nonBlocking) |
82 { | 82 { |
83 _nonBlocking=nonBlocking; | 83 _nonBlocking=nonBlocking; |
84 } | 84 } |
85 | 85 |
86 /* ------------------------------------------------------------ */ | 86 /* ------------------------------------------------------------ */ |
87 /** | 87 /** |
88 * | 88 * |
89 */ | 89 */ |
90 public ByteArrayEndPoint(byte[] input, int outputSize) | 90 public ByteArrayEndPoint(byte[] input, int outputSize) |
91 { | 91 { |
92 _inBytes=input; | 92 _inBytes=input; |
93 _in=new ByteArrayBuffer(input); | 93 _in=new ByteArrayBuffer(input); |
94 _out=new ByteArrayBuffer(outputSize); | 94 _out=new ByteArrayBuffer(outputSize); |
95 } | 95 } |
96 | 96 |
97 /* ------------------------------------------------------------ */ | 97 /* ------------------------------------------------------------ */ |
98 /** | 98 /** |
99 * @return Returns the in. | 99 * @return Returns the in. |
100 */ | 100 */ |
101 public ByteArrayBuffer getIn() | 101 public ByteArrayBuffer getIn() |
102 { | 102 { |
103 return _in; | 103 return _in; |
104 } | 104 } |
105 /* ------------------------------------------------------------ */ | 105 /* ------------------------------------------------------------ */ |
106 /** | 106 /** |
107 * @param in The in to set. | 107 * @param in The in to set. |
108 */ | 108 */ |
109 public void setIn(ByteArrayBuffer in) | 109 public void setIn(ByteArrayBuffer in) |
110 { | 110 { |
111 _in = in; | 111 _in = in; |
112 } | 112 } |
113 /* ------------------------------------------------------------ */ | 113 /* ------------------------------------------------------------ */ |
114 /** | 114 /** |
115 * @return Returns the out. | 115 * @return Returns the out. |
116 */ | 116 */ |
117 public ByteArrayBuffer getOut() | 117 public ByteArrayBuffer getOut() |
118 { | 118 { |
119 return _out; | 119 return _out; |
120 } | 120 } |
121 /* ------------------------------------------------------------ */ | 121 /* ------------------------------------------------------------ */ |
122 /** | 122 /** |
123 * @param out The out to set. | 123 * @param out The out to set. |
124 */ | 124 */ |
125 public void setOut(ByteArrayBuffer out) | 125 public void setOut(ByteArrayBuffer out) |
126 { | 126 { |
127 _out = out; | 127 _out = out; |
128 } | 128 } |
129 | 129 |
130 /* ------------------------------------------------------------ */ | 130 /* ------------------------------------------------------------ */ |
131 /* | 131 /* |
132 * @see org.eclipse.io.EndPoint#isOpen() | 132 * @see org.eclipse.io.EndPoint#isOpen() |
133 */ | 133 */ |
134 public boolean isOpen() | 134 public boolean isOpen() |
135 { | 135 { |
136 return !_closed; | 136 return !_closed; |
137 } | 137 } |
138 | 138 |
139 /* ------------------------------------------------------------ */ | 139 /* ------------------------------------------------------------ */ |
140 /* | 140 /* |
141 * @see org.eclipse.jetty.io.EndPoint#isInputShutdown() | 141 * @see org.eclipse.jetty.io.EndPoint#isInputShutdown() |
142 */ | 142 */ |
143 public boolean isInputShutdown() | 143 public boolean isInputShutdown() |
144 { | 144 { |
145 return _closed; | 145 return _closed; |
146 } | 146 } |
147 | 147 |
148 /* ------------------------------------------------------------ */ | 148 /* ------------------------------------------------------------ */ |
149 /* | 149 /* |
150 * @see org.eclipse.jetty.io.EndPoint#isOutputShutdown() | 150 * @see org.eclipse.jetty.io.EndPoint#isOutputShutdown() |
151 */ | 151 */ |
152 public boolean isOutputShutdown() | 152 public boolean isOutputShutdown() |
153 { | 153 { |
154 return _closed; | 154 return _closed; |
155 } | 155 } |
156 | 156 |
157 /* ------------------------------------------------------------ */ | 157 /* ------------------------------------------------------------ */ |
158 /* | 158 /* |
159 * @see org.eclipse.io.EndPoint#isBlocking() | 159 * @see org.eclipse.io.EndPoint#isBlocking() |
160 */ | 160 */ |
161 public boolean isBlocking() | 161 public boolean isBlocking() |
162 { | 162 { |
163 return !_nonBlocking; | 163 return !_nonBlocking; |
164 } | 164 } |
165 | 165 |
166 /* ------------------------------------------------------------ */ | 166 /* ------------------------------------------------------------ */ |
167 public boolean blockReadable(long millisecs) | 167 public boolean blockReadable(long millisecs) |
168 { | 168 { |
169 return true; | 169 return true; |
170 } | 170 } |
171 | 171 |
172 /* ------------------------------------------------------------ */ | 172 /* ------------------------------------------------------------ */ |
173 public boolean blockWritable(long millisecs) | 173 public boolean blockWritable(long millisecs) |
174 { | 174 { |
175 return true; | 175 return true; |
176 } | 176 } |
177 | 177 |
178 /* ------------------------------------------------------------ */ | 178 /* ------------------------------------------------------------ */ |
179 /* | 179 /* |
180 * @see org.eclipse.io.EndPoint#shutdownOutput() | 180 * @see org.eclipse.io.EndPoint#shutdownOutput() |
181 */ | 181 */ |
182 public void shutdownOutput() throws IOException | 182 public void shutdownOutput() throws IOException |
183 { | 183 { |
184 close(); | 184 close(); |
185 } | 185 } |
186 | 186 |
187 /* ------------------------------------------------------------ */ | 187 /* ------------------------------------------------------------ */ |
188 /* | 188 /* |
189 * @see org.eclipse.io.EndPoint#shutdownInput() | 189 * @see org.eclipse.io.EndPoint#shutdownInput() |
190 */ | 190 */ |
191 public void shutdownInput() throws IOException | 191 public void shutdownInput() throws IOException |
192 { | 192 { |
193 close(); | 193 close(); |
194 } | 194 } |
195 | 195 |
196 /* ------------------------------------------------------------ */ | 196 /* ------------------------------------------------------------ */ |
197 /* | 197 /* |
198 * @see org.eclipse.io.EndPoint#close() | 198 * @see org.eclipse.io.EndPoint#close() |
199 */ | 199 */ |
200 public void close() throws IOException | 200 public void close() throws IOException |
201 { | 201 { |
202 _closed=true; | 202 _closed=true; |
203 } | 203 } |
204 | 204 |
205 /* ------------------------------------------------------------ */ | 205 /* ------------------------------------------------------------ */ |
206 /* | 206 /* |
207 * @see org.eclipse.io.EndPoint#fill(org.eclipse.io.Buffer) | 207 * @see org.eclipse.io.EndPoint#fill(org.eclipse.io.Buffer) |
208 */ | 208 */ |
209 public int fill(Buffer buffer) throws IOException | 209 public int fill(Buffer buffer) throws IOException |
210 { | 210 { |
211 if (_closed) | 211 if (_closed) |
212 throw new IOException("CLOSED"); | 212 throw new IOException("CLOSED"); |
213 | 213 |
214 if (_in!=null && _in.length()>0) | 214 if (_in!=null && _in.length()>0) |
215 { | 215 { |
216 int len = buffer.put(_in); | 216 int len = buffer.put(_in); |
217 _in.skip(len); | 217 _in.skip(len); |
218 return len; | 218 return len; |
219 } | 219 } |
220 | 220 |
221 if (_in!=null && _in.length()==0 && _nonBlocking) | 221 if (_in!=null && _in.length()==0 && _nonBlocking) |
222 return 0; | 222 return 0; |
223 | 223 |
224 close(); | 224 close(); |
225 return -1; | 225 return -1; |
226 } | 226 } |
227 | 227 |
228 /* ------------------------------------------------------------ */ | 228 /* ------------------------------------------------------------ */ |
229 /* | 229 /* |
230 * @see org.eclipse.io.EndPoint#flush(org.eclipse.io.Buffer) | 230 * @see org.eclipse.io.EndPoint#flush(org.eclipse.io.Buffer) |
231 */ | 231 */ |
232 public int flush(Buffer buffer) throws IOException | 232 public int flush(Buffer buffer) throws IOException |
233 { | 233 { |
234 if (_closed) | 234 if (_closed) |
235 throw new IOException("CLOSED"); | 235 throw new IOException("CLOSED"); |
236 if (_growOutput && buffer.length()>_out.space()) | 236 if (_growOutput && buffer.length()>_out.space()) |
237 { | 237 { |
238 _out.compact(); | 238 _out.compact(); |
239 | 239 |
240 if (buffer.length()>_out.space()) | 240 if (buffer.length()>_out.space()) |
241 { | 241 { |
242 ByteArrayBuffer n = new ByteArrayBuffer(_out.putIndex()+buffer.length()); | 242 ByteArrayBuffer n = new ByteArrayBuffer(_out.putIndex()+buffer.length()); |
243 | 243 |
244 n.put(_out.peek(0,_out.putIndex())); | 244 n.put(_out.peek(0,_out.putIndex())); |
245 if (_out.getIndex()>0) | 245 if (_out.getIndex()>0) |
246 { | 246 { |
247 n.mark(); | 247 n.mark(); |
248 n.setGetIndex(_out.getIndex()); | 248 n.setGetIndex(_out.getIndex()); |
249 } | 249 } |
250 _out=n; | 250 _out=n; |
251 } | 251 } |
252 } | 252 } |
253 int len = _out.put(buffer); | 253 int len = _out.put(buffer); |
254 if (!buffer.isImmutable()) | 254 if (!buffer.isImmutable()) |
255 buffer.skip(len); | 255 buffer.skip(len); |
256 return len; | 256 return len; |
257 } | 257 } |
258 | 258 |
259 /* ------------------------------------------------------------ */ | 259 /* ------------------------------------------------------------ */ |
260 /* | 260 /* |
261 * @see org.eclipse.io.EndPoint#flush(org.eclipse.io.Buffer, org.eclipse.io.Buffer, org.eclipse.io.Buffer) | 261 * @see org.eclipse.io.EndPoint#flush(org.eclipse.io.Buffer, org.eclipse.io.Buffer, org.eclipse.io.Buffer) |
262 */ | 262 */ |
263 public int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException | 263 public int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException |
264 { | 264 { |
265 if (_closed) | 265 if (_closed) |
266 throw new IOException("CLOSED"); | 266 throw new IOException("CLOSED"); |
267 | 267 |
268 int flushed=0; | 268 int flushed=0; |
269 | 269 |
270 if (header!=null && header.length()>0) | 270 if (header!=null && header.length()>0) |
271 flushed=flush(header); | 271 flushed=flush(header); |
272 | 272 |
273 if (header==null || header.length()==0) | 273 if (header==null || header.length()==0) |
274 { | 274 { |
275 if (buffer!=null && buffer.length()>0) | 275 if (buffer!=null && buffer.length()>0) |
276 flushed+=flush(buffer); | 276 flushed+=flush(buffer); |
277 | 277 |
278 if (buffer==null || buffer.length()==0) | 278 if (buffer==null || buffer.length()==0) |
279 { | 279 { |
280 if (trailer!=null && trailer.length()>0) | 280 if (trailer!=null && trailer.length()>0) |
281 { | 281 { |
282 flushed+=flush(trailer); | 282 flushed+=flush(trailer); |
283 } | 283 } |
284 } | 284 } |
285 } | 285 } |
286 | 286 |
287 return flushed; | 287 return flushed; |
288 } | 288 } |
289 | 289 |
290 /* ------------------------------------------------------------ */ | 290 /* ------------------------------------------------------------ */ |
291 /** | 291 /** |
292 * | 292 * |
293 */ | 293 */ |
294 public void reset() | 294 public void reset() |
295 { | 295 { |
296 _closed=false; | 296 _closed=false; |
297 _in.clear(); | 297 _in.clear(); |
298 _out.clear(); | 298 _out.clear(); |
299 if (_inBytes!=null) | 299 if (_inBytes!=null) |
300 _in.setPutIndex(_inBytes.length); | 300 _in.setPutIndex(_inBytes.length); |
301 } | 301 } |
302 | 302 |
303 /* ------------------------------------------------------------ */ | 303 /* ------------------------------------------------------------ */ |
304 /* | 304 /* |
305 * @see org.eclipse.io.EndPoint#getLocalAddr() | 305 * @see org.eclipse.io.EndPoint#getLocalAddr() |
306 */ | 306 */ |
307 public String getLocalAddr() | 307 public String getLocalAddr() |
308 { | 308 { |
309 return null; | 309 return null; |
310 } | 310 } |
311 | 311 |
312 /* ------------------------------------------------------------ */ | 312 /* ------------------------------------------------------------ */ |
313 /* | 313 /* |
314 * @see org.eclipse.io.EndPoint#getLocalHost() | 314 * @see org.eclipse.io.EndPoint#getLocalHost() |
315 */ | 315 */ |
316 public String getLocalHost() | 316 public String getLocalHost() |
317 { | 317 { |
318 return null; | 318 return null; |
319 } | 319 } |
320 | 320 |
321 /* ------------------------------------------------------------ */ | 321 /* ------------------------------------------------------------ */ |
322 /* | 322 /* |
323 * @see org.eclipse.io.EndPoint#getLocalPort() | 323 * @see org.eclipse.io.EndPoint#getLocalPort() |
324 */ | 324 */ |
325 public int getLocalPort() | 325 public int getLocalPort() |
326 { | 326 { |
327 return 0; | 327 return 0; |
328 } | 328 } |
329 | 329 |
330 /* ------------------------------------------------------------ */ | 330 /* ------------------------------------------------------------ */ |
331 /* | 331 /* |
332 * @see org.eclipse.io.EndPoint#getRemoteAddr() | 332 * @see org.eclipse.io.EndPoint#getRemoteAddr() |
333 */ | 333 */ |
334 public String getRemoteAddr() | 334 public String getRemoteAddr() |
335 { | 335 { |
336 return null; | 336 return null; |
337 } | 337 } |
338 | 338 |
339 /* ------------------------------------------------------------ */ | 339 /* ------------------------------------------------------------ */ |
340 /* | 340 /* |
341 * @see org.eclipse.io.EndPoint#getRemoteHost() | 341 * @see org.eclipse.io.EndPoint#getRemoteHost() |
342 */ | 342 */ |
343 public String getRemoteHost() | 343 public String getRemoteHost() |
344 { | 344 { |
345 return null; | 345 return null; |
346 } | 346 } |
347 | 347 |
348 /* ------------------------------------------------------------ */ | 348 /* ------------------------------------------------------------ */ |
349 /* | 349 /* |
350 * @see org.eclipse.io.EndPoint#getRemotePort() | 350 * @see org.eclipse.io.EndPoint#getRemotePort() |
351 */ | 351 */ |
352 public int getRemotePort() | 352 public int getRemotePort() |
353 { | 353 { |
354 return 0; | 354 return 0; |
355 } | 355 } |
356 | 356 |
357 /* ------------------------------------------------------------ */ | 357 /* ------------------------------------------------------------ */ |
358 /* | 358 /* |
359 * @see org.eclipse.io.EndPoint#getConnection() | 359 * @see org.eclipse.io.EndPoint#getConnection() |
360 */ | 360 */ |
361 public Object getTransport() | 361 public Object getTransport() |
362 { | 362 { |
363 return _inBytes; | 363 return _inBytes; |
364 } | 364 } |
365 | 365 |
366 /* ------------------------------------------------------------ */ | 366 /* ------------------------------------------------------------ */ |
367 public void flush() throws IOException | 367 public void flush() throws IOException |
368 { | 368 { |
369 } | 369 } |
370 | 370 |
371 /* ------------------------------------------------------------ */ | 371 /* ------------------------------------------------------------ */ |
372 /** | 372 /** |
373 * @return the growOutput | 373 * @return the growOutput |
374 */ | 374 */ |
375 public boolean isGrowOutput() | 375 public boolean isGrowOutput() |
376 { | 376 { |
377 return _growOutput; | 377 return _growOutput; |
378 } | 378 } |
379 | 379 |
380 /* ------------------------------------------------------------ */ | 380 /* ------------------------------------------------------------ */ |
381 /** | 381 /** |
382 * @param growOutput the growOutput to set | 382 * @param growOutput the growOutput to set |
383 */ | 383 */ |
384 public void setGrowOutput(boolean growOutput) | 384 public void setGrowOutput(boolean growOutput) |
385 { | 385 { |
386 _growOutput=growOutput; | 386 _growOutput=growOutput; |
387 } | 387 } |
388 | 388 |
389 /* ------------------------------------------------------------ */ | 389 /* ------------------------------------------------------------ */ |
390 /** | 390 /** |
391 * @see org.eclipse.jetty.io.EndPoint#getMaxIdleTime() | 391 * @see org.eclipse.jetty.io.EndPoint#getMaxIdleTime() |
392 */ | 392 */ |
393 public int getMaxIdleTime() | 393 public int getMaxIdleTime() |
394 { | 394 { |
395 return _maxIdleTime; | 395 return _maxIdleTime; |
396 } | 396 } |
397 | 397 |
398 /* ------------------------------------------------------------ */ | 398 /* ------------------------------------------------------------ */ |
399 /** | 399 /** |
400 * @see org.eclipse.jetty.io.EndPoint#setMaxIdleTime(int) | 400 * @see org.eclipse.jetty.io.EndPoint#setMaxIdleTime(int) |
401 */ | 401 */ |
402 public void setMaxIdleTime(int timeMs) throws IOException | 402 public void setMaxIdleTime(int timeMs) throws IOException |
403 { | 403 { |
404 _maxIdleTime=timeMs; | 404 _maxIdleTime=timeMs; |
405 } | 405 } |
406 | 406 |
407 | 407 |
408 } | 408 } |