org.apache.catalina.connector

## Class CoyoteInputStream

- java.lang.Object
- - java.io.InputStream
  - - javax.servlet.ServletInputStream
    - - org.apache.catalina.connector.CoyoteInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class CoyoteInputStream
      extends ServletInputStream

  This class handles reading bytes.
  Author:
    Remy Maucherat

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected InputBuffer` | `ib`
    `protected static StringManager` | `sm`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `CoyoteInputStream(InputBuffer ib)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()`
    `protected Object` | `clone()` Prevent cloning the facade.
    `void` | `close()` Close the stream Since we re-cycle, we can't allow the call to super.close() which would permanently disable us.
    `boolean` | `isFinished()` Has the end of this InputStream been reached?
    `boolean` | `isReady()` Can data be read from this InputStream without blocking?
    `int` | `read()`
    `int` | `read(byte[] b)`
    `int` | `read(byte[] b, int off, int len)`
    `int` | `read(ByteBuffer b)` Transfers bytes from the buffer to the specified ByteBuffer.
    `int` | `readLine(byte[] b, int off, int len)` Reads the input stream, one line at a time.
    `void` | `setReadListener(ReadListener listener)` Sets the `ReadListener` for this `ServletInputStream` and thereby switches to non-blocking IO.

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

      `mark, markSupported, reset, skip`

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

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

- - ### Field Detail

    - #### sm

          protected static final StringManager sm

    - #### ib

          protected InputBuffer ib

  - ### Constructor Detail

    - #### CoyoteInputStream

          protected CoyoteInputStream(InputBuffer ib)

  - ### Method Detail

    - #### clone

          protected Object clone()
                          throws CloneNotSupportedException

      Prevent cloning the facade.
      Overrides:
        `clone` in class `Object`
      Throws:
        `CloneNotSupportedException`

    - #### read

          public int read()
                   throws IOException

      Specified by:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### available

          public int available()
                        throws IOException

      Overrides:
        `available` in class `InputStream`
      Throws:
        `IOException`

    - #### read

          public int read(byte[] b)
                   throws IOException

      Overrides:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws IOException

      Overrides:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### read

          public int read(ByteBuffer b)
                   throws IOException

      Transfers bytes from the buffer to the specified ByteBuffer. After the operation the position of the ByteBuffer will be returned to the one before the operation, the limit will be the position incremented by the number of the transferred bytes.
      Parameters:
        `b` - the ByteBuffer into which bytes are to be written.
      Returns:
        an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
      Throws:
        `IOException` - if an input or output exception has occurred

    - #### readLine

          public int readLine(byte[] b,
                     int off,
                     int len)
                       throws IOException

      Description copied from class: `javax.servlet.ServletInputStream`
      Reads the input stream, one line at a time. Starting at an offset, reads bytes into an array, until it reads a certain number of bytes or reaches a newline character, which it reads into the array as well.

      This method returns -1 if it reaches the end of the input stream before reading the maximum number of bytes.

      Overrides:
        `readLine` in class `ServletInputStream`
      Parameters:
        `b` - an array of bytes into which data is read
        `off` - an integer specifying the character at which this method begins reading
        `len` - an integer specifying the maximum number of bytes to read
      Returns:
        an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
      Throws:
        `IOException` - if an input or output exception has occurred

    - #### close

          public void close()
                     throws IOException

      Close the stream Since we re-cycle, we can't allow the call to super.close() which would permanently disable us.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `InputStream`
      Throws:
        `IOException`

    - #### isFinished

          public boolean isFinished()

      Description copied from class: `javax.servlet.ServletInputStream`
      Has the end of this InputStream been reached?
      Specified by:
        `isFinished` in class `ServletInputStream`
      Returns:
        `true` if all the data has been read from the stream, else `false`

    - #### isReady

          public boolean isReady()

      Description copied from class: `javax.servlet.ServletInputStream`
      Can data be read from this InputStream without blocking? Returns If this method is called and returns false, the container will invoke `ReadListener.onDataAvailable()` when data is available.
      Specified by:
        `isReady` in class `ServletInputStream`
      Returns:
        `true` if data can be read without blocking, else `false`

    - #### setReadListener

          public void setReadListener(ReadListener listener)

      Description copied from class: `javax.servlet.ServletInputStream`
      Sets the `ReadListener` for this `ServletInputStream` 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:
        `setReadListener` in class `ServletInputStream`
      Parameters:
        `listener` - The non-blocking IO read listener

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