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
Abstract base class for session output buffers that stream data to
an arbitrary
OutputStream. 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
FieldsModifier and TypeFieldDescriptionprivate ByteBufferprivate final ByteArrayBufferprivate static final byte[]private final CharsetEncoderprivate final intprivate final BasicHttpTransportMetrics -
Constructor Summary
ConstructorsConstructorDescriptionSessionOutputBufferImpl(int bufferSize) SessionOutputBufferImpl(int bufferSize, CharsetEncoder encoder) SessionOutputBufferImpl(BasicHttpTransportMetrics metrics, int bufferSize, int fragmentSizeHint, CharsetEncoder charEncoder) Creates new instance of SessionOutputBufferImpl. -
Method Summary
Modifier and TypeMethodDescriptionintReturns available space in the buffer.intcapacity()Returns total capacity of the buffervoidflush(OutputStream outputStream) Flushes this session buffer and forces any buffered output bytes to be written out.private voidflushBuffer(OutputStream outputStream) ReturnsHttpTransportMetricsfor this session buffer.private voidhandleEncodingResult(CoderResult result, OutputStream outputStream) intlength()Return length data stored in the buffervoidwrite(byte[] b, int off, int len, OutputStream outputStream) Writeslenbytes from the specified byte array starting at offsetoffto this session buffer.voidwrite(byte[] b, OutputStream outputStream) Writesb.lengthbytes from the specified byte array to this session buffer.voidwrite(int b, OutputStream outputStream) Writes the specified byte to this session buffer.private voidwriteEncoded(CharBuffer cbuf, OutputStream outputStream) voidwriteLine(CharArrayBuffer charbuffer, OutputStream outputStream) Writes characters from the specified char array followed by a line delimiter to this session buffer.
-
Field Details
-
CRLF
private static final byte[] CRLF -
metrics
-
buffer
-
fragmentSizeHint
private final int fragmentSizeHint -
encoder
-
bbuf
-
-
Constructor Details
-
SessionOutputBufferImpl
public SessionOutputBufferImpl(BasicHttpTransportMetrics metrics, int bufferSize, int fragmentSizeHint, 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. Value0disables fragment buffering.charEncoder- charEncoder to be used for encoding HTTP protocol elements. Ifnullsimple type cast will be used for char to byte conversion.
-
SessionOutputBufferImpl
public SessionOutputBufferImpl(int bufferSize) -
SessionOutputBufferImpl
-
-
Method Details
-
capacity
public int capacity()Description copied from interface:SessionOutputBufferReturns total capacity of the buffer- Specified by:
capacityin interfaceSessionOutputBuffer- Returns:
- total capacity
-
length
public int length()Description copied from interface:SessionOutputBufferReturn length data stored in the buffer- Specified by:
lengthin interfaceSessionOutputBuffer- Returns:
- data length
-
available
public int available()Description copied from interface:SessionOutputBufferReturns available space in the buffer.- Specified by:
availablein interfaceSessionOutputBuffer- Returns:
- available space.
-
flushBuffer
- Throws:
IOException
-
flush
Description copied from interface:SessionOutputBufferFlushes this session buffer and forces any buffered output bytes to be written out. The general contract offlushis 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:
flushin interfaceSessionOutputBuffer- Throws:
IOException- if an I/O error occurs.
-
write
Description copied from interface:SessionOutputBufferWriteslenbytes from the specified byte array starting at offsetoffto this session buffer.If
offis negative, orlenis negative, oroff+lenis greater than the length of the arrayb, then anIndexOutOfBoundsExceptionis thrown.- Specified by:
writein interfaceSessionOutputBuffer- 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
Description copied from interface:SessionOutputBufferWritesb.lengthbytes from the specified byte array to this session buffer.- Specified by:
writein interfaceSessionOutputBuffer- Parameters:
b- the data.- Throws:
IOException- if an I/O error occurs.
-
write
Description copied from interface:SessionOutputBufferWrites the specified byte to this session buffer.- Specified by:
writein interfaceSessionOutputBuffer- Parameters:
b- thebyte.- Throws:
IOException- if an I/O error occurs.
-
writeLine
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:
writeLinein interfaceSessionOutputBuffer- Parameters:
charbuffer- the buffer containing chars of the line.- Throws:
IOException- if an I/O error occurs.
-
writeEncoded
- Throws:
IOException
-
handleEncodingResult
- Throws:
IOException
-
getMetrics
Description copied from interface:SessionOutputBufferReturnsHttpTransportMetricsfor this session buffer.- Specified by:
getMetricsin interfaceSessionOutputBuffer- Returns:
- transport metrics.
-