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 the
ContentOutputBuffer
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 calling produceContent(ContentEncoder)
.
The worker thread is expected to write data to the buffer by calling
write(int)
, write(byte[], int, int)
or writeCompleted()
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
FieldsModifier and TypeFieldDescriptionprivate final Condition
private boolean
private IOControl
private final ReentrantLock
private boolean
Fields inherited from class org.apache.http.nio.util.ExpandableBuffer
buffer, INPUT_MODE, OUTPUT_MODE
-
Constructor Summary
ConstructorsConstructorDescriptionSharedOutputBuffer
(int bufferSize) SharedOutputBuffer
(int bufferSize, IOControl ioControl, ByteBufferAllocator allocator) Deprecated.SharedOutputBuffer
(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()
void
flush()
private void
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 ioControl) 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
Indicates the content has been fully written.Methods inherited from class org.apache.http.nio.util.ExpandableBuffer
clear, ensureCapacity, expand, getMode, setInputMode, setOutputMode, toString
-
Field Details
-
lock
-
condition
-
ioControl
-
shutdown
private volatile boolean shutdown -
endOfStream
private volatile boolean endOfStream
-
-
Constructor Details
-
SharedOutputBuffer
@Deprecated public SharedOutputBuffer(int bufferSize, IOControl ioControl, ByteBufferAllocator allocator) Deprecated. -
SharedOutputBuffer
- Since:
- 4.3
-
SharedOutputBuffer
public SharedOutputBuffer(int bufferSize) - Since:
- 4.3
-
-
Method Details
-
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.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
- Throws:
IOException
- Since:
- 4.3
-
close
public void close() -
shutdown
public void shutdown() -
write
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
- Throws:
IOException
-
write
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
- Specified by:
flush
in interfaceContentOutputBuffer
- Throws:
IOException
-
flushContent
- Throws:
IOException
-
writeCompleted
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.
-
SharedOutputBuffer(int, ByteBufferAllocator)