# Class CoyoteOutputStream

java.lang.Object
java.io.OutputStream
jakarta.servlet.ServletOutputStream
org.apache.catalina.connector.CoyoteOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

public class CoyoteOutputStream extends ServletOutputStream
Coyote implementation of the servlet output stream.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected OutputBuffer`
  `ob`
  The underlying output buffer.
  `protected static final StringManager`
  `sm`
  The string manager for this class.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `CoyoteOutputStream(OutputBuffer ob)`
  Construct a new CoyoteOutputStream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Prevent cloning the facade.
  `void`
  `close()`
  `void`
  `flush()`
  Will send the buffer to the client.
  `boolean`
  `isReady()`
  Checks if a non-blocking write will succeed.
  `void`
  `setWriteListener(WriteListener listener)`
  Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO.
  `void`
  `write(byte[] b)`
  `void`
  `write(byte[] b, int off, int len)`
  `void`
  `write(int i)`
  `void`
  `write(ByteBuffer from)`

  ### Methods inherited from class ServletOutputStream

  `print, print, print, print, print, print, print, println, println, println, println, println, println, println, println`

  ### Methods inherited from class OutputStream

  `nullOutputStream`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### sm

    protected static final StringManager sm
    The string manager for this class.

  - ### ob

    protected OutputBuffer ob
    The underlying output buffer.

- ## Constructor Details

  - ### CoyoteOutputStream

    protected CoyoteOutputStream(OutputBuffer ob)
    Construct a new CoyoteOutputStream.
    Parameters:
      `ob` - The underlying output buffer

- ## Method Details

  - ### clone

    protected Object clone() throws CloneNotSupportedException
    Prevent cloning the facade.
    Overrides:
      `clone` in class `Object`
    Throws:
      `CloneNotSupportedException`

  - ### write

    public void write(int i) throws IOException
    Specified by:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### write

    public void write(byte[] b) throws IOException
    Overrides:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### write

    public void write(byte[] b, int off, int len) throws IOException
    Overrides:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### write

    public void write(ByteBuffer from) throws IOException
    Throws:
      `IOException`

  - ### flush

    public void flush() throws IOException
    Will send the buffer to the client.
    Specified by:
      `flush` in interface `Flushable`
    Overrides:
      `flush` in class `OutputStream`
    Throws:
      `IOException`

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `OutputStream`
    Throws:
      `IOException`

  - ### isReady

    public boolean isReady()
    Description copied from class: `jakarta.servlet.ServletOutputStream`
    Checks if a non-blocking write will succeed. If this returns `false`, it will cause a callback to `WriteListener.onWritePossible()` when the buffer has emptied. If this method returns `false` no further data must be written until the container calls `WriteListener.onWritePossible()`.
    Specified by:
      `isReady` in class `ServletOutputStream`
    Returns:
      `true` if data can be written, else `false`

  - ### setWriteListener

    public void setWriteListener(WriteListener listener)
    Description copied from class: `jakarta.servlet.ServletOutputStream`
    Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO. It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing.
    Specified by:
      `setWriteListener` in class `ServletOutputStream`
    Parameters:
      `listener` - The non-blocking IO write listener