org.apache.http.nio.util
Class SharedOutputBuffer

java.lang.Object
  extended by org.apache.http.nio.util.ExpandableBuffer
      extended by org.apache.http.nio.util.SharedOutputBuffer
All Implemented Interfaces:
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
 
Fields inherited from class org.apache.http.nio.util.ExpandableBuffer
buffer, INPUT_MODE, OUTPUT_MODE
 
Constructor Summary
SharedOutputBuffer(int bufferSize)
           
SharedOutputBuffer(int bufferSize, ByteBufferAllocator allocator)
           
SharedOutputBuffer(int bufferSize, IOControl ioControl, ByteBufferAllocator allocator)
          Deprecated. (4.3) use SharedOutputBuffer(int, ByteBufferAllocator)
 
Method Summary
 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. (4.3) use produceContent(ContentEncoder, IOControl)
 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)
          Writes len bytes from the specified byte array starting at offset off 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
clear, ensureCapacity, expand, getMode, setInputMode, setOutputMode, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SharedOutputBuffer

@Deprecated
public SharedOutputBuffer(int bufferSize,
                                     IOControl ioControl,
                                     ByteBufferAllocator allocator)
Deprecated. (4.3) use SharedOutputBuffer(int, ByteBufferAllocator)


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 interface ContentOutputBuffer

hasData

public boolean hasData()
Description copied from class: ExpandableBuffer
Determines if the buffer contains data.

Overrides:
hasData in class ExpandableBuffer
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 interface BufferInfo
Overrides:
available in class ExpandableBuffer
Returns:
buffer length.

capacity

public int capacity()
Description copied from class: ExpandableBuffer
Returns the total capacity of this buffer.

Specified by:
capacity in interface BufferInfo
Overrides:
capacity in class ExpandableBuffer
Returns:
total capacity.

length

public int length()
Description copied from class: ExpandableBuffer
Returns the length of this buffer.

Specified by:
length in interface BufferInfo
Overrides:
length in class ExpandableBuffer
Returns:
buffer length.

produceContent

@Deprecated
public int produceContent(ContentEncoder encoder)
                   throws IOException
Deprecated. (4.3) use produceContent(ContentEncoder, IOControl)

Description copied from interface: ContentOutputBuffer
Writes content from this buffer to the given ContentEncoder.

Specified by:
produceContent in interface ContentOutputBuffer
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 ioControl)
                   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
Writes len bytes from the specified byte array starting at offset off to this buffer.

If off is negative, or len is negative, or off+len is greater than the length of the array b, this method can throw a runtime exception. The exact type of runtime exception thrown by this method depends on implementation.

Specified by:
write in interface ContentOutputBuffer
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 interface ContentOutputBuffer
Parameters:
b - the byte.
Throws:
IOException - if an I/O error occurs.

flush

public void flush()
           throws IOException
Specified by:
flush in interface ContentOutputBuffer
Throws:
IOException

writeCompleted

public void writeCompleted()
                    throws IOException
Description copied from interface: ContentOutputBuffer
Indicates the content has been fully written.

Specified by:
writeCompleted in interface ContentOutputBuffer
Throws:
IOException - if an I/O error occurs.


Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.