# Interface InputFilter

All Superinterfaces:
  `InputBuffer`

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

public interface InputFilter extends InputBuffer
Input filter interface.

Author:
  Remy Maucherat

- ## 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 org.apache.coyote.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`