Package org.apache.coyote.http11.upgrade

## 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
`UpgradeServletInputStream​(UpgradeProcessorBase processor, SocketWrapperBase<?> socketWrapper, UpgradeInfo upgradeInfo)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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: `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`
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: `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.

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`