org.apache.catalina.connector

## 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).
  Author:
    Costin Manolache, Remy Maucherat

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected C2BConverter` | `conv` Current char to byte converter.
    `static int` | `DEFAULT_BUFFER_SIZE`

    - ### Fields inherited from class java.io.Writer

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OutputBuffer(int size)` Create the buffer with the specified initial size.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(byte[] src, int off, int len)` Add data to the buffer.
    `void` | `append(ByteBuffer from)`
    `void` | `append(char[] src, int off, int len)` Add data to the buffer.
    `void` | `checkConverter()`
    `void` | `checkRegisterForWrite()`
    `void` | `close()` Close the output buffer.
    `protected void` | `doFlush(boolean realFlush)` Flush bytes or chars contained in the buffer.
    `void` | `flush()` Flush bytes or chars contained in the buffer.
    `int` | `getBufferSize()`
    `long` | `getContentWritten()`
    `boolean` | `isBlocking()`
    `boolean` | `isClosed()` Is the response output closed ?
    `boolean` | `isNew()` Has this buffer been used at all?
    `boolean` | `isReady()`
    `boolean` | `isSuspended()` Is the response output suspended ?
    `void` | `realWriteBytes(ByteBuffer buf)` Sends the buffer data to the client output, checking the state of Response and calling the right interceptors.
    `void` | `realWriteChars(CharBuffer from)` Convert the chars to bytes, then send the data to the client.
    `void` | `recycle()` Recycle the output buffer.
    `void` | `reset()`
    `void` | `reset(boolean resetWriterStreamFlags)`
    `void` | `setBufferSize(int size)`
    `void` | `setResponse(Response coyoteResponse)` Associated Coyote response.
    `void` | `setSuspended(boolean suspended)` Set the suspended flag.
    `void` | `setWriteListener(WriteListener listener)`
    `void` | `write(byte[] b, int off, int len)`
    `void` | `write(ByteBuffer from)`
    `void` | `write(char[] c)`
    `void` | `write(char[] c, int off, int len)`
    `void` | `write(int c)`
    `void` | `write(String s)`
    `void` | `write(String s, int off, int len)` Append a string to the buffer
    `void` | `writeByte(int b)`

    - ### Methods inherited from class java.io.Writer

      `append, append, append`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_BUFFER_SIZE

          public static final int DEFAULT_BUFFER_SIZE

      See Also:
        Constant Field Values

    - #### conv

          protected C2BConverter conv

      Current char to byte converter.

  - ### Constructor Detail

    - #### OutputBuffer

          public OutputBuffer(int size)

      Create the buffer with the specified initial size.
      Parameters:
        `size` - Buffer size to use

  - ### Method Detail

    - #### 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 `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      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

      Throws:
        `IOException`

    - #### write

          public void write(ByteBuffer from)
                     throws IOException

      Throws:
        `IOException`

    - #### writeByte

          public void writeByte(int b)
                         throws IOException

      Throws:
        `IOException`

    - #### 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

      Throws:
        `IOException`

    - #### getContentWritten

          public long getContentWritten()

    - #### 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)

    - #### reset

          public void reset()

    - #### reset

          public void reset(boolean resetWriterStreamFlags)

    - #### getBufferSize

          public int getBufferSize()

    - #### isReady

          public boolean isReady()

    - #### setWriteListener

          public void setWriteListener(WriteListener listener)

    - #### isBlocking

          public boolean isBlocking()

    - #### checkRegisterForWrite

          public void checkRegisterForWrite()

    - #### 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

      Throws:
        `IOException`

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.