Package org.apache.hc.core5.http.impl.io
Class SessionOutputBufferImpl
- java.lang.Object
-
- org.apache.hc.core5.http.impl.io.SessionOutputBufferImpl
-
- All Implemented Interfaces:
SessionOutputBuffer
public class SessionOutputBufferImpl extends java.lang.Object implements SessionOutputBuffer
Abstract base class for session output buffers that stream data to an arbitraryOutputStream
. This class buffers small chunks of output data in an internal byte array for optimal output performance.writeLine(CharArrayBuffer, OutputStream)
method of this class uses CR-LF as a line delimiter.- Since:
- 4.3
-
-
Field Summary
Fields Modifier and Type Field Description private java.nio.ByteBuffer
bbuf
private ByteArrayBuffer
buffer
private static byte[]
CRLF
private java.nio.charset.CharsetEncoder
encoder
private int
fragmentSizeHint
private BasicHttpTransportMetrics
metrics
-
Constructor Summary
Constructors Constructor Description SessionOutputBufferImpl(int bufferSize)
SessionOutputBufferImpl(int bufferSize, java.nio.charset.CharsetEncoder encoder)
SessionOutputBufferImpl(BasicHttpTransportMetrics metrics, int bufferSize, int fragmentSizeHint, java.nio.charset.CharsetEncoder charEncoder)
Creates new instance of SessionOutputBufferImpl.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
Returns available space in the buffer.int
capacity()
Returns total capacity of the buffervoid
flush(java.io.OutputStream outputStream)
Flushes this session buffer and forces any buffered output bytes to be written out.private void
flushBuffer(java.io.OutputStream outputStream)
HttpTransportMetrics
getMetrics()
ReturnsHttpTransportMetrics
for this session buffer.private void
handleEncodingResult(java.nio.charset.CoderResult result, java.io.OutputStream outputStream)
int
length()
Return length data stored in the buffervoid
write(byte[] b, int off, int len, java.io.OutputStream outputStream)
Writeslen
bytes from the specified byte array starting at offsetoff
to this session buffer.void
write(byte[] b, java.io.OutputStream outputStream)
Writesb.length
bytes from the specified byte array to this session buffer.void
write(int b, java.io.OutputStream outputStream)
Writes the specified byte to this session buffer.private void
writeEncoded(java.nio.CharBuffer cbuf, java.io.OutputStream outputStream)
void
writeLine(CharArrayBuffer charbuffer, java.io.OutputStream outputStream)
Writes characters from the specified char array followed by a line delimiter to this session buffer.
-
-
-
Field Detail
-
CRLF
private static final byte[] CRLF
-
metrics
private final BasicHttpTransportMetrics metrics
-
buffer
private final ByteArrayBuffer buffer
-
fragmentSizeHint
private final int fragmentSizeHint
-
encoder
private final java.nio.charset.CharsetEncoder encoder
-
bbuf
private java.nio.ByteBuffer bbuf
-
-
Constructor Detail
-
SessionOutputBufferImpl
public SessionOutputBufferImpl(BasicHttpTransportMetrics metrics, int bufferSize, int fragmentSizeHint, java.nio.charset.CharsetEncoder charEncoder)
Creates new instance of SessionOutputBufferImpl.- Parameters:
metrics
- HTTP transport metrics.bufferSize
- buffer size. Must be a positive number.fragmentSizeHint
- fragment size hint defining a minimal size of a fragment that should be written out directly to the socket bypassing the session buffer. Value0
disables fragment buffering.charEncoder
- charEncoder to be used for encoding HTTP protocol elements. Ifnull
simple type cast will be used for char to byte conversion.
-
SessionOutputBufferImpl
public SessionOutputBufferImpl(int bufferSize)
-
SessionOutputBufferImpl
public SessionOutputBufferImpl(int bufferSize, java.nio.charset.CharsetEncoder encoder)
-
-
Method Detail
-
capacity
public int capacity()
Description copied from interface:SessionOutputBuffer
Returns total capacity of the buffer- Specified by:
capacity
in interfaceSessionOutputBuffer
- Returns:
- total capacity
-
length
public int length()
Description copied from interface:SessionOutputBuffer
Return length data stored in the buffer- Specified by:
length
in interfaceSessionOutputBuffer
- Returns:
- data length
-
available
public int available()
Description copied from interface:SessionOutputBuffer
Returns available space in the buffer.- Specified by:
available
in interfaceSessionOutputBuffer
- Returns:
- available space.
-
flushBuffer
private void flushBuffer(java.io.OutputStream outputStream) throws java.io.IOException
- Throws:
java.io.IOException
-
flush
public void flush(java.io.OutputStream outputStream) throws java.io.IOException
Description copied from interface:SessionOutputBuffer
Flushes this session buffer and forces any buffered output bytes to be written out. The general contract offlush
is that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.- Specified by:
flush
in interfaceSessionOutputBuffer
- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(byte[] b, int off, int len, java.io.OutputStream outputStream) throws java.io.IOException
Description copied from interface:SessionOutputBuffer
Writeslen
bytes from the specified byte array starting at offsetoff
to this session buffer.If
off
is negative, orlen
is negative, oroff+len
is greater than the length of the arrayb
, then anIndexOutOfBoundsException
is thrown.- Specified by:
write
in interfaceSessionOutputBuffer
- 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, java.io.OutputStream outputStream) throws java.io.IOException
Description copied from interface:SessionOutputBuffer
Writesb.length
bytes from the specified byte array to this session buffer.- Specified by:
write
in interfaceSessionOutputBuffer
- Parameters:
b
- the data.- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(int b, java.io.OutputStream outputStream) throws java.io.IOException
Description copied from interface:SessionOutputBuffer
Writes the specified byte to this session buffer.- Specified by:
write
in interfaceSessionOutputBuffer
- Parameters:
b
- thebyte
.- Throws:
java.io.IOException
- if an I/O error occurs.
-
writeLine
public void writeLine(CharArrayBuffer charbuffer, java.io.OutputStream outputStream) throws java.io.IOException
Writes characters from the specified char array followed by a line delimiter to this session buffer.This method uses CR-LF as a line delimiter.
- Specified by:
writeLine
in interfaceSessionOutputBuffer
- Parameters:
charbuffer
- the buffer containing chars of the line.- Throws:
java.io.IOException
- if an I/O error occurs.
-
writeEncoded
private void writeEncoded(java.nio.CharBuffer cbuf, java.io.OutputStream outputStream) throws java.io.IOException
- Throws:
java.io.IOException
-
handleEncodingResult
private void handleEncodingResult(java.nio.charset.CoderResult result, java.io.OutputStream outputStream) throws java.io.IOException
- Throws:
java.io.IOException
-
getMetrics
public HttpTransportMetrics getMetrics()
Description copied from interface:SessionOutputBuffer
ReturnsHttpTransportMetrics
for this session buffer.- Specified by:
getMetrics
in interfaceSessionOutputBuffer
- Returns:
- transport metrics.
-
-