comparison src/org/eclipse/jetty/io/ByteArrayEndPoint.java @ 802:3428c60d7cfc

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