Package org.apache.http.nio.util
Class SharedInputBuffer
java.lang.Object
org.apache.http.nio.util.ExpandableBuffer
org.apache.http.nio.util.SharedInputBuffer
- All Implemented Interfaces:
BufferInfo
,BufferInfo
,ContentInputBuffer
@Contract(threading=SAFE_CONDITIONAL)
public class SharedInputBuffer
extends ExpandableBuffer
implements ContentInputBuffer
Implementation of the
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.
- Since:
- 4.0
-
Field Summary
Fields inherited from class org.apache.http.nio.util.ExpandableBuffer
INPUT_MODE, OUTPUT_MODE
-
Constructor Summary
ConstructorsConstructorDescriptionSharedInputBuffer
(int buffersize) SharedInputBuffer
(int buffersize, IOControl ioctrl, ByteBufferAllocator allocator) Deprecated.SharedInputBuffer
(int buffersize, ByteBufferAllocator allocator) -
Method Summary
Modifier and TypeMethodDescriptionint
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 ioctrl) boolean
hasData()
Determines if the buffer contains data.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 tolen
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()
Methods inherited from class org.apache.http.nio.util.ExpandableBuffer
toString
-
Constructor Details
-
SharedInputBuffer
@Deprecated public SharedInputBuffer(int buffersize, IOControl ioctrl, ByteBufferAllocator allocator) Deprecated. -
SharedInputBuffer
- Since:
- 4.3
-
SharedInputBuffer
public SharedInputBuffer(int buffersize) - Since:
- 4.3
-
-
Method Details
-
reset
public void reset()Description copied from interface:ContentInputBuffer
Resets the buffer by clearing its state and stored content.- Specified by:
reset
in interfaceContentInputBuffer
-
consumeContent
Deprecated.Description copied from interface:ContentInputBuffer
Reads content from the givenContentDecoder
and stores it in this buffer.- Specified by:
consumeContent
in interfaceContentInputBuffer
- Parameters:
decoder
- the content decoder.- Returns:
- number of bytes read.
- Throws:
IOException
- in case of an I/O error.
-
consumeContent
- Throws:
IOException
- Since:
- 4.3
-
hasData
public boolean hasData()Description copied from class:ExpandableBuffer
Determines if the buffer contains data.- Overrides:
hasData
in classExpandableBuffer
- Returns:
true
if there is data in the buffer,false
otherwise.
-
available
public int available()Description copied from class:ExpandableBuffer
Returns available capacity of this buffer.- Specified by:
available
in interfaceBufferInfo
- Specified by:
available
in interfaceBufferInfo
- Overrides:
available
in classExpandableBuffer
- Returns:
- buffer length.
-
capacity
public int capacity()Description copied from class:ExpandableBuffer
Returns the total capacity of this buffer.- Specified by:
capacity
in interfaceBufferInfo
- Specified by:
capacity
in interfaceBufferInfo
- Overrides:
capacity
in classExpandableBuffer
- Returns:
- total capacity.
-
length
public int length()Description copied from class:ExpandableBuffer
Returns the length of this buffer.- Specified by:
length
in interfaceBufferInfo
- Specified by:
length
in interfaceBufferInfo
- Overrides:
length
in classExpandableBuffer
- Returns:
- buffer length.
-
close
public void close() -
shutdown
public void shutdown() -
read
Description copied from interface:ContentInputBuffer
Reads one byte from this buffer. If the buffer is empty 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.- Specified by:
read
in interfaceContentInputBuffer
- Returns:
- one byte
- Throws:
IOException
-
read
Description copied from interface:ContentInputBuffer
Reads up tolen
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, orlen
is negative, oroff+len
is greater than the length of the arrayb
, 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.- Specified by:
read
in interfaceContentInputBuffer
- Parameters:
b
- the buffer into which the data is read.off
- the start offset in arrayb
at which the data is written.len
- the maximum number of bytes to read.- Returns:
- the total number of bytes read into the buffer, or
-1
if there is no more data because the end of the stream has been reached. - Throws:
IOException
- if an I/O error occurs.
-
read
- Throws:
IOException
-
SharedInputBuffer(int, ByteBufferAllocator)