Package org.apache.http.nio.util
Class SharedOutputBuffer
- java.lang.Object
-
- org.apache.http.nio.util.ExpandableBuffer
-
- org.apache.http.nio.util.SharedOutputBuffer
-
- All Implemented Interfaces:
BufferInfo
,BufferInfo
,ContentOutputBuffer
@Contract(threading=SAFE_CONDITIONAL) public class SharedOutputBuffer extends ExpandableBuffer implements ContentOutputBuffer
Implementation of theContentOutputBuffer
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 expected to transfer data from the buffer to
ContentEncoder
by callingproduceContent(ContentEncoder)
.The worker thread is expected to write data to the buffer by calling
write(int)
,write(byte[], int, int)
orwriteCompleted()
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
Constructors Constructor Description SharedOutputBuffer(int buffersize)
SharedOutputBuffer(int buffersize, IOControl ioctrl, ByteBufferAllocator allocator)
Deprecated.SharedOutputBuffer(int buffersize, ByteBufferAllocator allocator)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
available()
Returns available capacity of this buffer.int
capacity()
Returns the total capacity of this buffer.void
close()
void
flush()
boolean
hasData()
Determines if the buffer contains data.int
length()
Returns the length of this buffer.int
produceContent(ContentEncoder encoder)
Deprecated.int
produceContent(ContentEncoder encoder, IOControl ioctrl)
void
reset()
Resets the buffer by clearing its state and stored content.void
shutdown()
void
write(byte[] b)
void
write(byte[] b, int off, int len)
Writeslen
bytes from the specified byte array starting at offsetoff
to this buffer.void
write(int b)
Writes the specified byte to this buffer.void
writeCompleted()
Indicates the content has been fully written.-
Methods inherited from class org.apache.http.nio.util.ExpandableBuffer
toString
-
-
-
-
Constructor Detail
-
SharedOutputBuffer
@Deprecated public SharedOutputBuffer(int buffersize, IOControl ioctrl, ByteBufferAllocator allocator)
Deprecated.
-
SharedOutputBuffer
public SharedOutputBuffer(int buffersize, ByteBufferAllocator allocator)
- Since:
- 4.3
-
SharedOutputBuffer
public SharedOutputBuffer(int buffersize)
- Since:
- 4.3
-
-
Method Detail
-
reset
public void reset()
Description copied from interface:ContentOutputBuffer
Resets the buffer by clearing its state and stored content.- Specified by:
reset
in interfaceContentOutputBuffer
-
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.
-
produceContent
@Deprecated public int produceContent(ContentEncoder encoder) throws IOException
Deprecated.Description copied from interface:ContentOutputBuffer
Writes content from this buffer to the givenContentEncoder
.- Specified by:
produceContent
in interfaceContentOutputBuffer
- Parameters:
encoder
- content encoder.- Returns:
- number of bytes written.
- Throws:
IOException
- in case of an I/O error.
-
produceContent
public int produceContent(ContentEncoder encoder, IOControl ioctrl) throws IOException
- Throws:
IOException
- Since:
- 4.3
-
close
public void close()
-
shutdown
public void shutdown()
-
write
public void write(byte[] b, int off, int len) throws IOException
Description copied from interface:ContentOutputBuffer
Writeslen
bytes from the specified byte array starting at offsetoff
to this 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.- Specified by:
write
in interfaceContentOutputBuffer
- Parameters:
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.- Throws:
IOException
- if an I/O error occurs.
-
write
public void write(byte[] b) throws IOException
- Throws:
IOException
-
write
public void write(int b) throws IOException
Description copied from interface:ContentOutputBuffer
Writes the specified byte to this buffer.- Specified by:
write
in interfaceContentOutputBuffer
- Parameters:
b
- thebyte
.- Throws:
IOException
- if an I/O error occurs.
-
flush
public void flush() throws IOException
- Specified by:
flush
in interfaceContentOutputBuffer
- Throws:
IOException
-
writeCompleted
public void writeCompleted() throws IOException
Description copied from interface:ContentOutputBuffer
Indicates the content has been fully written.- Specified by:
writeCompleted
in interfaceContentOutputBuffer
- Throws:
IOException
- if an I/O error occurs.
-
-