# Interface InputFilter

All Superinterfaces:
  `InputBuffer`

All Known Implementing Classes:
  `BufferedInputFilter, ChunkedInputFilter, IdentityInputFilter, SavedRequestInputFilter, VoidInputFilter`

public interface InputFilter extends InputBuffer
Input filter interface.

## Method Summary

Modifier and Type
Method
Description
`long`
`end()`
End the current request.
`ByteChunk`
`getEncodingName()`
Get the name of the encoding handled by this filter.
`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)`
Some filters need additional parameters from the request.

### Methods inherited from interface InputBuffer

`available, doRead`

## Method Details

### setRequest

void setRequest(Request request)
Some filters need additional parameters from the request.

Parameters:
  `request` - The request to be associated with this filter

### recycle

void recycle()
Make the filter ready to process the next request.

### getEncodingName

ByteChunk getEncodingName()
Get the name of the encoding handled by this filter.

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

### setBuffer

void setBuffer(InputBuffer buffer)
Set the next buffer in the filter pipeline.

Parameters:
  `buffer` - The next buffer

### end

long end() throws IOException
End the current request.

Returns:
  0 is the expected return value. A positive value indicates that too many bytes were read. This method is allowed to use buffer.doRead to consume extra bytes. The result of this method can't be negative (if an error happens, an IOException should be thrown instead).
Throws:
  `IOException` - If an error happens

### isFinished

boolean isFinished()
Has the request body been read fully?

Returns:
  `true` if the request body has been fully read, otherwise `false`