Class OutputBuffer

  • All Implemented Interfaces:
    Closeable, Flushable, Appendable, AutoCloseable, org.glassfish.grizzly.http.util.ByteChunk.ByteOutputChannel

    public class OutputBuffer
    extends Writer
    implements org.glassfish.grizzly.http.util.ByteChunk.ByteOutputChannel
    The buffer used by Tomcat response. This is a derivative of the Tomcat 3.3 OutputBuffer, with the removal of some of the state handling (which in Coyote is mostly the Processor's responsibility).
    Author:
    Costin Manolache, Remy Maucherat
    • Field Detail

      • DEFAULT_ENCODING

        public static final String DEFAULT_ENCODING
    • Constructor Detail

      • OutputBuffer

        public OutputBuffer()
        Default constructor. Allocate the buffer with the default buffer size.
      • OutputBuffer

        public OutputBuffer​(int size)
        Alternate constructor which allows specifying the initial buffer size.
        Parameters:
        size - Buffer size to use
    • Method Detail

      • setCoyoteResponse

        public void setCoyoteResponse​(Response coyoteResponse)
      • isSuspended

        public boolean isSuspended()
        Is the response output suspended ?
        Returns:
        suspended flag value
      • setSuspended

        public void setSuspended​(boolean suspended)
        Set the suspended flag.
        Parameters:
        suspended - New suspended flag value
      • recycle

        public void recycle()
        Recycle the output buffer.
      • close

        public void close()
                   throws IOException
        Close the output buffer. This tries to calculate the response size if the response has not been committed yet.
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Specified by:
        close in class Writer
        Throws:
        IOException - An underlying IOException occurred
      • doFlush

        protected void doFlush​(boolean realFlush)
                        throws IOException
        Flush bytes or chars contained in the buffer.
        Throws:
        IOException - An underlying IOException occurred
      • realWriteBytes

        public void realWriteBytes​(byte[] buf,
                                   int off,
                                   int cnt)
                            throws IOException
        Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.
        Specified by:
        realWriteBytes in interface org.glassfish.grizzly.http.util.ByteChunk.ByteOutputChannel
        Parameters:
        buf - Byte buffer to be written to the response
        off - Offset
        cnt - Length
        Throws:
        IOException - An underlying IOException occurred
      • flushBytes

        public void flushBytes()
                        throws IOException
        Real write - this buffer will be sent to the client
        Throws:
        IOException
      • getBytesWritten

        public int getBytesWritten()
      • getCharsWritten

        public int getCharsWritten()
      • getContentWritten

        public int getContentWritten()
      • isNew

        public boolean isNew()
        True if this buffer hasn't been used ( since recycle() ) - i.e. no chars or bytes have been added to the buffer.
      • setBufferSize

        public void setBufferSize​(int size)
      • reset

        public void reset()
      • getBufferSize

        public int getBufferSize()
      • isReady

        public boolean isReady()
      • setWriteListener

        public void setWriteListener​(jakarta.servlet.WriteListener writeListener)
      • hasData

        public boolean hasData()
        Are there any pending writes waiting to be flushed?