Package org.apache.coyote.http11.upgrade

## Class UpgradeServletInputStream

- java.lang.Object
- - java.io.InputStream
  - - javax.servlet.ServletInputStream
    - - org.apache.coyote.http11.upgrade.UpgradeServletInputStream

- All Implemented Interfaces:
    `java.io.Closeable`, `java.lang.AutoCloseable`

      public class UpgradeServletInputStream
      extends ServletInputStream

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `UpgradeServletInputStream​(UpgradeProcessorBase processor, SocketWrapperBase<?> socketWrapper, UpgradeInfo upgradeInfo)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `close()` |
    `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 off, int len)` |
    `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

      `available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo`

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

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

- - ### Constructor Detail

    - #### UpgradeServletInputStream

          public UpgradeServletInputStream​(UpgradeProcessorBase processor,
                                           SocketWrapperBase<?> socketWrapper,
                                           UpgradeInfo upgradeInfo)

  - ### Method Detail

    - #### isFinished

          public final 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 final 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 final 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

    - #### read

          public final int read()
                         throws java.io.IOException

      Specified by:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### readLine

          public final int readLine​(byte[] b,
                                    int off,
                                    int len)
                             throws java.io.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:
        `java.io.IOException` - if an input or output exception has occurred

    - #### read

          public final int read​(byte[] b,
                                int off,
                                int len)
                         throws java.io.IOException

      Overrides:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `java.io.Closeable`
      Overrides:
        `close` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`