@Contract(threading=SAFE_CONDITIONAL) public class SharedInputBuffer extends ExpandableBuffer implements ContentInputBuffer
ContentInputBuffer interface that can be
shared by multiple threads, usually the I/O dispatch of an I/O reactor and
a worker thread.
The I/O dispatch thread is expect to transfer data from ContentDecoder to the buffer
by calling consumeContent(ContentDecoder).
The worker thread is expected to read the data from the buffer by calling
read() or read(byte[], int, int) methods.
In case of an abnormal situation or when no longer needed the buffer must be shut down
using shutdown() method.
buffer, INPUT_MODE, OUTPUT_MODE| Constructor and Description |
|---|
SharedInputBuffer(int bufferSize) |
SharedInputBuffer(int bufferSize,
ByteBufferAllocator allocator) |
SharedInputBuffer(int bufferSize,
IOControl ioControl,
ByteBufferAllocator allocator)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
int |
available()
Returns available capacity of this buffer.
|
int |
capacity()
Returns the total capacity of this buffer.
|
void |
close() |
int |
consumeContent(ContentDecoder decoder)
Deprecated.
|
int |
consumeContent(ContentDecoder decoder,
IOControl ioControl) |
boolean |
hasData()
Determines if the buffer contains data.
|
protected boolean |
isEndOfStream() |
protected boolean |
isShutdown() |
int |
length()
Returns the length of this buffer.
|
int |
read()
Reads one byte from this buffer.
|
int |
read(byte[] b) |
int |
read(byte[] b,
int off,
int len)
Reads up to
len bytes of data from this buffer into
an array of bytes. |
void |
reset()
Resets the buffer by clearing its state and stored content.
|
void |
shutdown() |
protected void |
waitForData() |
clear, ensureCapacity, expand, getMode, setInputMode, setOutputMode, toString@Deprecated public SharedInputBuffer(int bufferSize, IOControl ioControl, ByteBufferAllocator allocator)
SharedInputBuffer(int, ByteBufferAllocator)public SharedInputBuffer(int bufferSize,
ByteBufferAllocator allocator)
public SharedInputBuffer(int bufferSize)
public void reset()
ContentInputBufferreset in interface ContentInputBuffer@Deprecated public int consumeContent(ContentDecoder decoder) throws IOException
consumeContent(ContentDecoder, IOControl)ContentInputBufferContentDecoder and stores it in
this buffer.consumeContent in interface ContentInputBufferdecoder - the content decoder.IOException - in case of an I/O error.public int consumeContent(ContentDecoder decoder, IOControl ioControl) throws IOException
IOExceptionpublic boolean hasData()
ExpandableBufferhasData in class ExpandableBuffertrue if there is data in the buffer,
false otherwise.public int available()
ExpandableBufferavailable in interface BufferInfoavailable in class ExpandableBufferpublic int capacity()
ExpandableBuffercapacity in interface BufferInfocapacity in class ExpandableBufferpublic int length()
ExpandableBufferlength in interface BufferInfolength in class ExpandableBufferprotected void waitForData()
throws IOException
IOExceptionpublic void close()
public void shutdown()
protected boolean isShutdown()
protected boolean isEndOfStream()
public int read()
throws IOException
ContentInputBuffer-1 if the end of content stream has been reached.read in interface ContentInputBufferIOExceptionpublic int read(byte[] b,
int off,
int len)
throws IOException
ContentInputBufferlen bytes of data from this buffer into
an array of bytes. The exact number of bytes read depends how many bytes
are stored in the buffer.
If off is negative, or len is negative, or
off+len is greater than the length of the array
b, this method can throw a runtime exception. The exact type
of runtime exception thrown by this method depends on implementation.
This method returns -1 if the end of content stream has been
reached.
read in interface ContentInputBufferb - the buffer into which the data is read.off - the start offset in array b
at which the data is written.len - the maximum number of bytes to read.-1 if there is no more data because the end of
the stream has been reached.IOException - if an I/O error occurs.public int read(byte[] b)
throws IOException
IOExceptionCopyright © 2005–2022 The Apache Software Foundation. All rights reserved.