# Class Http2OutputBuffer

java.lang.Object
org.apache.coyote.http2.Http2OutputBuffer

All Implemented Interfaces:
  `HttpOutputBuffer, OutputBuffer`

public class Http2OutputBuffer extends Object implements HttpOutputBuffer
HTTP/2 output buffer that wraps a chain of `OutputFilter` instances and delegates to a `Stream.StreamOutputBuffer`.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Http2OutputBuffer(Response coyoteResponse, org.apache.coyote.http2.Stream.StreamOutputBuffer streamOutputBuffer)`
  Creates the output buffer.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addFilter(OutputFilter filter)`
  Add a filter at the start of the existing processing chain.
  `int`
  `doWrite(ByteBuffer chunk)`
  Write the given data to the response.
  `void`
  `end()`
  Finish writing the current response.
  `void`
  `flush()`
  Flushes any unwritten data to the client.
  `long`
  `getBytesWritten()`
  Bytes written to the underlying socket.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### Http2OutputBuffer

    public Http2OutputBuffer(Response coyoteResponse, org.apache.coyote.http2.Stream.StreamOutputBuffer streamOutputBuffer)
    Creates the output buffer.
    Parameters:
      `coyoteResponse` - The Coyote response
      `streamOutputBuffer` - The underlying stream output buffer

- ## Method Details

  - ### addFilter

    public void addFilter(OutputFilter filter)
    Add a filter at the start of the existing processing chain. Subsequent calls to the `HttpOutputBuffer` methods of this object will be passed to the filter. If appropriate, the filter will then call the same method on the next HttpOutputBuffer in the chain until the call reaches the StreamOutputBuffer.
    Parameters:
      `filter` - The filter to add to the start of the processing chain

  - ### doWrite

    public int doWrite(ByteBuffer chunk) throws IOException
    Description copied from interface: `OutputBuffer`
    Write the given data to the response. The caller owns the chunks.
    Specified by:
      `doWrite` in interface `OutputBuffer`
    Parameters:
      `chunk` - data to write
    Returns:
      The number of bytes written which may be less than available in the input chunk
    Throws:
      `IOException` - an underlying I/O error occurred

  - ### getBytesWritten

    public long getBytesWritten()
    Description copied from interface: `OutputBuffer`
    Bytes written to the underlying socket. This includes the effects of chunking, compression, etc.
    Specified by:
      `getBytesWritten` in interface `OutputBuffer`
    Returns:
      Bytes written for the current request

  - ### end

    public void end() throws IOException
    Description copied from interface: `HttpOutputBuffer`
    Finish writing the current response. It is acceptable to write extra bytes using `OutputBuffer.doWrite(java.nio.ByteBuffer)` during the execution of this method.
    Specified by:
      `end` in interface `HttpOutputBuffer`
    Throws:
      `IOException` - If an I/O error occurs while writing to the client

  - ### flush

    public void flush() throws IOException
    Description copied from interface: `HttpOutputBuffer`
    Flushes any unwritten data to the client.
    Specified by:
      `flush` in interface `HttpOutputBuffer`
    Throws:
      `IOException` - If an I/O error occurs while flushing