public static Buffer getHeaderName(Buffer _buffer, View tok) { int len=((_buffer.peek()&0xFF)<<8)|(_buffer.peek(_buffer.getIndex()+1)&0xFF); if ((0xFF00&len)==0xA000) { _buffer.skip(1); return Ajp13RequestHeaders.CACHE.get(_buffer.get()); } int start=_buffer.getIndex(); tok.update(start+2,start+len+2); _buffer.skip(len+3); return tok; }
public View(Buffer buffer) { super(READWRITE,!buffer.isImmutable()); _buffer=buffer.buffer(); setPutIndex(buffer.putIndex()); setGetIndex(buffer.getIndex()); setMarkIndex(buffer.markIndex()); _access=buffer.isReadOnly()?READONLY:READWRITE; }
private DataInfo toDataInfo(Buffer buffer, boolean close) { if (buffer instanceof ByteArrayBuffer) return new BytesDataInfo(buffer.array(), buffer.getIndex(), buffer.length(), close); if (buffer instanceof NIOBuffer) { ByteBuffer byteBuffer = ((NIOBuffer)buffer).getByteBuffer(); byteBuffer.limit(buffer.putIndex()); byteBuffer.position(buffer.getIndex()); return new ByteBufferDataInfo(byteBuffer, close); } return new BytesDataInfo(buffer.asArray(), close); }
private synchronized int expelBuffer(long blockFor) throws IOException { if (_buffer==null) return 0; int result = flushBuffer(); _buffer.compact(); if (!_endp.isBlocking()) { while (_buffer.space()==0) { boolean ready = _endp.blockWritable(blockFor); if (!ready) throw new IOException("Write timeout"); result += flushBuffer(); _buffer.compact(); } } return result; }
/** * @return The {@link Buffer#capacity} of the underlying buffer. */ public int capacity() { return _buffer.capacity(); }
@Override protected int gatheringFlush(Buffer header, ByteBuffer bbuf0, Buffer buffer, ByteBuffer bbuf1) throws IOException { int headerPosition = header.getIndex(); int headerLength = header.length(); int bufferPosition = buffer.getIndex(); int written = super.gatheringFlush(header, bbuf0, buffer,bbuf1); notifyOutgoing(header, headerPosition, written > headerLength ? headerLength : written); notifyOutgoing(buffer, bufferPosition, written > headerLength ? written - headerLength : 0); return written; }
public static byte getByte(Buffer _buffer) { return _buffer.get(); }
public boolean isBufferEmpty() { _lock.lock(); try { return _buffer == null || _buffer.length() == 0; } finally { _lock.unlock(); } }
public void returnBuffer(Buffer buffer) { synchronized(this) { buffer.clear(); if (buffer==_header) _headerOut=false; if (buffer==_buffer) _bufferOut=false; } }
/** * @return The result of calling {@link Buffer#peek(int, int)} on the underlying buffer */ @Override public Buffer peek(int index, int length) { return _buffer.peek(index, length); }
private String getString(Buffer buffer) { return getString(buffer.asArray()); }
/** * @return The {@link Buffer#array()} from the underlying buffer. */ public byte[] array() { return _buffer.array(); }