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
Modifier and Type
Field
Description
`protected static final ByteChunk`
`ENCODING`
`protected static final String`
`ENCODING_NAME`

## Constructor Summary

Constructors
Constructor
Description
`VoidInputFilter()`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### ENCODING_NAME

protected static final String ENCODING_NAME

See Also:
  - Constant Field Values

### ENCODING

protected static final ByteChunk ENCODING

## Constructor Details

### VoidInputFilter

public VoidInputFilter()

## Method Details

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