org.apache.coyote.http11.upgrade

## Class AbstractServletInputStream

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

All Implemented Interfaces:
  Closeable, AutoCloseable

Direct Known Subclasses:
  AprServletInputStream, BioServletInputStream, NioServletInputStream

    public abstract class AbstractServletInputStream
    extends ServletInputStream

Implements the new Servlet 3.1 methods for `ServletInputStream`.

### Field Summary

Fields
`protected static StringManager` `sm`

### Constructor Summary

Constructors
Constructor and Description
`AbstractServletInputStream()`

### Method Summary

Methods
`void` `close()`
`protected abstract void` `doClose()`
`protected abstract boolean` `doIsReady()`
`protected abstract int` `doRead(boolean block, byte[] b, int off, int len)` Abstract method to be overridden by concrete implementations.
`protected boolean` `isCloseRequired()`
`boolean` `isFinished()` New Servlet 3.1 method.
`boolean` `isReady()` New Servlet 3.1 method.
`protected void` `onDataAvailable()`
`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)` New Servlet 3.1 method.

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

`available, mark, markSupported, read, reset, skip`

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

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

### Field Detail

#### sm

    protected static final StringManager sm

### Constructor Detail

#### AbstractServletInputStream

    public AbstractServletInputStream()

### Method Detail

#### isFinished

    public final boolean isFinished()

New Servlet 3.1 method.

#### isReady

    public final boolean isReady()

New Servlet 3.1 method.

#### setReadListener

    public final void setReadListener(ReadListener listener)

New Servlet 3.1 method.

#### 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: `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

#### 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 `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Overrides:
  `close` in class `InputStream`
Throws:
  `IOException`

#### onDataAvailable

    protected final void onDataAvailable()
                                  throws IOException

Throws:
  `IOException`

#### isCloseRequired

    protected final boolean isCloseRequired()

#### doIsReady

    protected abstract boolean doIsReady()
                                  throws IOException

Throws:
  `IOException`

#### doRead

    protected abstract int doRead(boolean block,
             byte[] b,
             int off,
             int len)
                           throws IOException

Abstract method to be overridden by concrete implementations. The base class will ensure that there are no concurrent calls to this method for the same socket.

Throws:
  `IOException`

#### doClose

    protected abstract void doClose()
                             throws IOException

Throws:
  `IOException`