UpgradeServletInputStream (Apache Tomcat 11.0.21 API Documentation)
Description: declaration: package: org.apache.coyote.http11.upgrade, class: UpgradeServletInputStream

# Class UpgradeServletInputStream

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

All Implemented Interfaces:
  `Closeable, AutoCloseable`

public class UpgradeServletInputStream extends ServletInputStream

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `final boolean`
  `isFinished()`
  Has the end of this InputStream been reached?
  `final boolean`
  `isReady()`
  Returns `true` if it is allowable to call a `read()` method.
  `final int`
  `read()`
  `final int`
  `read(byte[] b, int off, int len)`
  `final int`
  `readLine(byte[] b, int off, int len)`
  Reads the input stream, one line at a time.
  `final void`
  `setReadListener(ReadListener listener)`
  Sets the `ReadListener` for this `ServletInputStream` and thereby switches to non-blocking IO.

  ### Methods inherited from class ServletInputStream

  `read, readAllBytes, readNBytes, readNBytes`

  ### Methods inherited from class InputStream

  `available, mark, markSupported, nullInputStream, read, reset, skip, skipNBytes, transferTo`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### UpgradeServletInputStream

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

- ## Method Details

  - ### isFinished

    public final boolean isFinished()
    Description copied from class: `jakarta.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: `jakarta.servlet.ServletInputStream`
    Returns `true` if it is allowable to call a `read()` method. In blocking mode, this method will always return `true`, but a subsequent call to a `read()` method may block awaiting data. In non-blocking mode this method may return `false`, in which case it is illegal to call a `read()` method and an `IllegalStateException` MUST be thrown. When `ReadListener.onDataAvailable()` is called, a call to this method that returned `true` is implicit.

    If this method returns `false` and a `ReadListener` has been set via `ServletInputStream.setReadListener(ReadListener)`, then the container will subsequently invoke `ReadListener.onDataAvailable()` (or `ReadListener.onAllDataRead()`) once data (or EOF) has become available. Other than the initial call `ReadListener.onDataAvailable()` will only be called if and only if this method is called and returns false.

    Specified by:
      `isReady` in class `ServletInputStream`
    Returns:
      `true` if data can be obtained without blocking, otherwise returns `false`.

  - ### setReadListener

    public final void setReadListener(ReadListener listener)
    Description copied from class: `jakarta.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 IOException
    Specified by:
      `read` in class `InputStream`
    Throws:
      `IOException`

  - ### readLine

    public final int readLine(byte[] b, int off, int len) throws IOException
    Description copied from class: `jakarta.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.

    This method may only be used when the input stream is in blocking mode.

    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

  - ### read

    public final int read(byte[] b, int off, int len) throws IOException
    Overrides:
      `read` in class `InputStream`
    Throws:
      `IOException`

  - ### close

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