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 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 intavailable()Returns available capacity of this buffer.intcapacity()Returns the total capacity of this buffer.voidclose()voidflush()booleanhasData()Determines if the buffer contains data.intlength()Returns the length of this buffer.intproduceContent(ContentEncoder encoder)Deprecated.intproduceContent(ContentEncoder encoder, IOControl ioctrl)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
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: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 ioctrl) 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
-
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.
-
-