Class 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 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
    • 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 buffer
      void 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()
      Returns HttpTransportMetrics for this session buffer.
      private void handleEncodingResult​(java.nio.charset.CoderResult result, java.io.OutputStream outputStream)  
      int length()
      Return length data stored in the buffer
      void write​(byte[] b, int off, int len, java.io.OutputStream outputStream)
      Writes len bytes from the specified byte array starting at offset off to this session buffer.
      void write​(byte[] b, java.io.OutputStream outputStream)
      Writes b.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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CRLF

        private static final byte[] CRLF
      • 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. Value 0 disables fragment buffering.
        charEncoder - charEncoder to be used for encoding HTTP protocol elements. If null 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

      • 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 of flush 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 interface SessionOutputBuffer
        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
        Writes len bytes from the specified byte array starting at offset off to this session buffer.

        If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

        Specified by:
        write in interface SessionOutputBuffer
        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
        Writes b.length bytes from the specified byte array to this session buffer.
        Specified by:
        write in interface SessionOutputBuffer
        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 interface SessionOutputBuffer
        Parameters:
        b - the byte.
        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 interface SessionOutputBuffer
        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