Mercurial Hosting > luan
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 } | 
