Package org.apache.coyote.http11.filters

## Class VoidInputFilter

- java.lang.Object
- - org.apache.coyote.http11.filters.VoidInputFilter

All Implemented Interfaces:
  `InputFilter`, `InputBuffer`

    public class VoidInputFilter
    extends Object
    implements InputFilter

Void input filter, which returns -1 when attempting a read. Used with a GET, HEAD, or a similar request.

Author:
  Remy Maucherat

### Field Summary

Fields
`protected static ByteChunk` `ENCODING`
`protected static String` `ENCODING_NAME`

### Constructor Summary

Constructors
`VoidInputFilter()`

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `available()` Obtain an estimate of the number of bytes that can be read without blocking.
`int` `doRead​(ApplicationBufferHandler handler)` Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler.
`long` `end()` End the current request.
`ByteChunk` `getEncodingName()` Return the name of the associated encoding; Here, the value is "void".
`boolean` `isFinished()` Has the request body been read fully?
`void` `recycle()` Make the filter ready to process the next request.
`void` `setBuffer​(InputBuffer buffer)` Set the next buffer in the filter pipeline.
`void` `setRequest​(Request request)` Set the associated request.

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

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

### Field Detail

#### ENCODING_NAME

    protected static final String ENCODING_NAME

See Also:
  Constant Field Values

#### ENCODING

    protected static final ByteChunk ENCODING

### Constructor Detail

#### VoidInputFilter

    public VoidInputFilter()

### Method Detail

#### doRead

    public int doRead​(ApplicationBufferHandler handler)
               throws IOException

Description copied from interface: `InputBuffer`
Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler. IMPORTANT: the current model assumes that the protocol will 'own' the ByteBuffer and return a pointer to it.

Specified by:
  `doRead` in interface `InputBuffer`
Parameters:
  `handler` - ApplicationBufferHandler that provides the buffer to read data into.
Returns:
  The number of bytes that have been added to the buffer or -1 for end of stream
Throws:
  `IOException` - If an I/O error occurs reading from the input stream

#### setRequest

    public void setRequest​(Request request)

Set the associated request.

Specified by:
  `setRequest` in interface `InputFilter`
Parameters:
  `request` - The request to be associated with this filter

#### setBuffer

    public void setBuffer​(InputBuffer buffer)

Set the next buffer in the filter pipeline.

Specified by:
  `setBuffer` in interface `InputFilter`
Parameters:
  `buffer` - The next buffer

#### recycle

    public void recycle()

Make the filter ready to process the next request.

Specified by:
  `recycle` in interface `InputFilter`

#### getEncodingName

    public ByteChunk getEncodingName()

Return the name of the associated encoding; Here, the value is "void".

Specified by:
  `getEncodingName` in interface `InputFilter`
Returns:
  The encoding name as a byte chunk to facilitate comparison with the value read from the HTTP headers which will also be a ByteChunk

#### end

    public long end()
             throws IOException

End the current request. It is acceptable to write extra bytes using buffer.doWrite during the execution of this method.

Specified by:
  `end` in interface `InputFilter`
Returns:
  Should return 0 unless the filter does some content length delimitation, in which case the number is the amount of extra bytes or missing bytes, which would indicate an error. Note: It is recommended that extra bytes be swallowed by the filter.
Throws:
  `IOException` - If an error happens

#### available

    public int available()

Description copied from interface: `InputBuffer`
Obtain an estimate of the number of bytes that can be read without blocking. Typically, this will be the number of available bytes known to be buffered.

Specified by:
  `available` in interface `InputBuffer`
Returns:
  The number of bytes that can be read without blocking

#### isFinished

    public boolean isFinished()

Description copied from interface: `InputFilter`
Has the request body been read fully?

Specified by:
  `isFinished` in interface `InputFilter`
Returns:
  `true` if the request body has been fully read, otherwise `false`