Class OutputBuffer

java.lang.Object
java.io.Writer
org.apache.catalina.connector.OutputBuffer
All Implemented Interfaces:
Closeable, Flushable, Appendable, AutoCloseable

public class OutputBuffer extends Writer
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).
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected C2BConverter
    Current char to byte converter.
    static final int
    Default buffer size in bytes.

    Fields inherited from class Writer

    lock
  • Constructor Summary

    Constructors
    Constructor
    Description
    OutputBuffer(int size)
    Create the buffer with the specified initial size.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    append(byte[] src, int off, int len)
    Add data to the buffer.
    void
    append(char[] src, int off, int len)
    Add data to the buffer.
    void
    Appends bytes from the given buffer to the output.
    void
    Checks and initializes the character-to-byte converter if needed.
    void
    Checks and registers for write if needed.
    void
    Close the output buffer.
    protected void
    doFlush(boolean realFlush)
    Flush bytes or chars contained in the buffer.
    void
    Flush bytes or chars contained in the buffer.
    int
    Returns the buffer size.
    long
    Returns the total number of bytes and characters written.
    boolean
    Checks if this output buffer is in blocking mode.
    boolean
    Is the response output closed ?
    boolean
    Has this buffer been used at all?
    boolean
    Checks if the output is ready for writing.
    boolean
    Is the response output suspended ?
    void
    Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.
    void
    Convert the chars to bytes, then send the data to the client.
    void
    Recycle the output buffer.
    void
    Resets the output buffer without resetting writer/stream flags.
    void
    reset(boolean resetWriterStreamFlags)
    Resets the output buffer.
    void
    setBufferSize(int size)
    Sets the buffer size, allocating a new buffer if needed.
    void
    Sets the error exception for this output buffer.
    void
    setResponse(Response coyoteResponse)
    Associated Coyote response.
    void
    setSuspended(boolean suspended)
    Set the suspended flag.
    void
    Sets the write listener for this output buffer.
    void
    write(byte[] b, int off, int len)
    Writes the specified bytes to the output buffer.
    void
    write(char[] c)
     
    void
    write(char[] c, int off, int len)
     
    void
    write(int c)
     
    void
     
    void
    write(String s, int off, int len)
    Append a string to the buffer
    void
    Writes bytes from the given buffer to the output.
    void
    writeByte(int b)
    Writes a single byte to the output buffer.

    Methods inherited from class Writer

    append, append, append, nullWriter

    Methods inherited from class Object

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

    • DEFAULT_BUFFER_SIZE

      public static final int DEFAULT_BUFFER_SIZE
      Default buffer size in bytes.
      See Also:
    • conv

      protected C2BConverter conv
      Current char to byte converter.
  • Constructor Details

    • OutputBuffer

      public OutputBuffer(int size)
      Create the buffer with the specified initial size.
      Parameters:
      size - Buffer size to use
  • Method Details

    • setResponse

      public void setResponse(Response coyoteResponse)
      Associated Coyote response.
      Parameters:
      coyoteResponse - Associated Coyote response
    • 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
    • isClosed

      public boolean isClosed()
      Is the response output closed ?
      Returns:
      closed 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
    • flush

      public void flush() throws IOException
      Flush bytes or chars contained in the buffer.
      Specified by:
      flush in interface Flushable
      Specified by:
      flush 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.
      Parameters:
      realFlush - true if this should also cause a real network flush
      Throws:
      IOException - An underlying IOException occurred
    • realWriteBytes

      public void realWriteBytes(ByteBuffer buf) throws IOException
      Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.
      Parameters:
      buf - the ByteBuffer to be written to the response
      Throws:
      IOException - An underlying IOException occurred
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Writes the specified bytes to the output buffer.
      Parameters:
      b - The byte array
      off - The offset in the array
      len - The number of bytes to write
      Throws:
      IOException - if an I/O error occurs
    • write

      public void write(ByteBuffer from) throws IOException
      Writes bytes from the given buffer to the output.
      Parameters:
      from - The byte buffer to read from
      Throws:
      IOException - if an I/O error occurs
    • writeByte

      public void writeByte(int b) throws IOException
      Writes a single byte to the output buffer.
      Parameters:
      b - The byte to write
      Throws:
      IOException - if an I/O error occurs
    • realWriteChars

      public void realWriteChars(CharBuffer from) throws IOException
      Convert the chars to bytes, then send the data to the client.
      Parameters:
      from - Char buffer to be written to the response
      Throws:
      IOException - An underlying IOException occurred
    • write

      public void write(int c) throws IOException
      Overrides:
      write in class Writer
      Throws:
      IOException
    • write

      public void write(char[] c) throws IOException
      Overrides:
      write in class Writer
      Throws:
      IOException
    • write

      public void write(char[] c, int off, int len) throws IOException
      Specified by:
      write in class Writer
      Throws:
      IOException
    • write

      public void write(String s, int off, int len) throws IOException
      Append a string to the buffer
      Overrides:
      write in class Writer
      Throws:
      IOException
    • write

      public void write(String s) throws IOException
      Overrides:
      write in class Writer
      Throws:
      IOException
    • checkConverter

      public void checkConverter() throws IOException
      Checks and initializes the character-to-byte converter if needed.
      Throws:
      IOException - if an I/O error occurs
    • getContentWritten

      public long getContentWritten()
      Returns the total number of bytes and characters written.
      Returns:
      The total content written
    • isNew

      public boolean isNew()
      Has this buffer been used at all?
      Returns:
      true if no chars or bytes have been added to the buffer since the last call to recycle()
    • setBufferSize

      public void setBufferSize(int size)
      Sets the buffer size, allocating a new buffer if needed.
      Parameters:
      size - The new buffer size
    • reset

      public void reset()
      Resets the output buffer without resetting writer/stream flags.
    • reset

      public void reset(boolean resetWriterStreamFlags)
      Resets the output buffer.
      Parameters:
      resetWriterStreamFlags - Whether to reset writer and stream flags
    • getBufferSize

      public int getBufferSize()
      Returns the buffer size.
      Returns:
      The buffer size in bytes
    • isReady

      public boolean isReady()
      Checks if the output is ready for writing.
      Returns:
      true if ready for writing
    • setWriteListener

      public void setWriteListener(WriteListener listener)
      Sets the write listener for this output buffer.
      Parameters:
      listener - The write listener
    • isBlocking

      public boolean isBlocking()
      Checks if this output buffer is in blocking mode.
      Returns:
      true if in blocking mode
    • checkRegisterForWrite

      public void checkRegisterForWrite()
      Checks and registers for write if needed.
    • append

      public void append(byte[] src, int off, int len) throws IOException
      Add data to the buffer.
      Parameters:
      src - Bytes array
      off - Offset
      len - Length
      Throws:
      IOException - Writing overflow data to the output channel failed
    • append

      public void append(char[] src, int off, int len) throws IOException
      Add data to the buffer.
      Parameters:
      src - Char array
      off - Offset
      len - Length
      Throws:
      IOException - Writing overflow data to the output channel failed
    • append

      public void append(ByteBuffer from) throws IOException
      Appends bytes from the given buffer to the output.
      Parameters:
      from - The byte buffer to append
      Throws:
      IOException - if an I/O error occurs
    • setErrorException

      public void setErrorException(Exception e)
      Sets the error exception for this output buffer.
      Parameters:
      e - The exception