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 theContentOutputBufferinterface 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
ContentEncoderby 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 Modifier and Type Field Description private java.util.concurrent.locks.Conditionconditionprivate booleanendOfStreamprivate IOControlioControlprivate java.util.concurrent.locks.ReentrantLocklockprivate booleanshutdown-
Fields inherited from class org.apache.http.nio.util.ExpandableBuffer
buffer, INPUT_MODE, OUTPUT_MODE
-
-
Constructor Summary
Constructors Constructor Description SharedOutputBuffer(int bufferSize)SharedOutputBuffer(int bufferSize, IOControl ioControl, ByteBufferAllocator allocator)Deprecated.SharedOutputBuffer(int bufferSize, ByteBufferAllocator allocator)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description intavailable()Returns available capacity of this buffer.intcapacity()Returns the total capacity of this buffer.voidclose()voidflush()private voidflushContent()booleanhasData()Determines if the buffer contains data.intlength()Returns the length of this buffer.intproduceContent(ContentEncoder encoder)Deprecated.intproduceContent(ContentEncoder encoder, IOControl ioControl)voidreset()Resets the buffer by clearing its state and stored content.voidshutdown()voidwrite(byte[] b)voidwrite(byte[] b, int off, int len)Writeslenbytes from the specified byte array starting at offsetoffto this buffer.voidwrite(int b)Writes the specified byte to this buffer.voidwriteCompleted()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 Detail
-
lock
private final java.util.concurrent.locks.ReentrantLock lock
-
condition
private final java.util.concurrent.locks.Condition condition
-
ioControl
private volatile IOControl ioControl
-
shutdown
private volatile boolean shutdown
-
endOfStream
private volatile boolean endOfStream
-
-
Constructor Detail
-
SharedOutputBuffer
@Deprecated public SharedOutputBuffer(int bufferSize, IOControl ioControl, 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:ContentOutputBufferResets the buffer by clearing its state and stored content.- Specified by:
resetin interfaceContentOutputBuffer
-
hasData
public boolean hasData()
Description copied from class:ExpandableBufferDetermines if the buffer contains data.- Overrides:
hasDatain classExpandableBuffer- Returns:
trueif there is data in the buffer,falseotherwise.
-
available
public int available()
Description copied from class:ExpandableBufferReturns available capacity of this buffer.- Specified by:
availablein interfaceBufferInfo- Specified by:
availablein interfaceBufferInfo- Overrides:
availablein classExpandableBuffer- Returns:
- buffer length.
-
capacity
public int capacity()
Description copied from class:ExpandableBufferReturns the total capacity of this buffer.- Specified by:
capacityin interfaceBufferInfo- Specified by:
capacityin interfaceBufferInfo- Overrides:
capacityin classExpandableBuffer- Returns:
- total capacity.
-
length
public int length()
Description copied from class:ExpandableBufferReturns the length of this buffer.- Specified by:
lengthin interfaceBufferInfo- Specified by:
lengthin interfaceBufferInfo- Overrides:
lengthin classExpandableBuffer- Returns:
- buffer length.
-
produceContent
@Deprecated public int produceContent(ContentEncoder encoder) throws java.io.IOException
Deprecated.Description copied from interface:ContentOutputBufferWrites content from this buffer to the givenContentEncoder.- Specified by:
produceContentin interfaceContentOutputBuffer- Parameters:
encoder- content encoder.- Returns:
- number of bytes written.
- Throws:
java.io.IOException- in case of an I/O error.
-
produceContent
public int produceContent(ContentEncoder encoder, IOControl ioControl) throws java.io.IOException
- Throws:
java.io.IOException- Since:
- 4.3
-
close
public void close()
-
shutdown
public void shutdown()
-
write
public void write(byte[] b, int off, int len) throws java.io.IOExceptionDescription copied from interface:ContentOutputBufferWriteslenbytes from the specified byte array starting at offsetoffto this buffer.If
offis negative, orlenis negative, oroff+lenis 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:
writein interfaceContentOutputBuffer- Parameters:
b- the data.off- the start offset in the data.len- the number of bytes to write.- Throws:
java.io.IOException- if an I/O error occurs.
-
write
public void write(byte[] b) throws java.io.IOException- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOExceptionDescription copied from interface:ContentOutputBufferWrites the specified byte to this buffer.- Specified by:
writein interfaceContentOutputBuffer- Parameters:
b- thebyte.- Throws:
java.io.IOException- if an I/O error occurs.
-
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfaceContentOutputBuffer- Throws:
java.io.IOException
-
flushContent
private void flushContent() throws java.io.IOException- Throws:
java.io.IOException
-
writeCompleted
public void writeCompleted() throws java.io.IOExceptionDescription copied from interface:ContentOutputBufferIndicates the content has been fully written.- Specified by:
writeCompletedin interfaceContentOutputBuffer- Throws:
java.io.IOException- if an I/O error occurs.
-
-