## org.apache.coyote.http11.filters
Class ChunkedInputFilter

    java.lang.Object
      org.apache.coyote.http11.filters.ChunkedInputFilter

All Implemented Interfaces:
  InputBuffer, InputFilter

public class ChunkedInputFilter
extends java.lang.Object
implements InputFilter

Chunked input filter.

Author:
  Remy Maucherat

Field Summary
`protected byte[]` `buf` Read bytes buffer.
`protected InputBuffer` `buffer` Next buffer in the pipeline.
`protected static ByteChunk` `ENCODING`
`protected static java.lang.String` `ENCODING_NAME`
`protected boolean` `endChunk` Flag set to true when the end chunk has been read.
`protected int` `lastValid` Last valid byte in the buffer.
`protected boolean` `needCRLFParse` Flag set to true if the next call to doRead() must parse a CRLF pair before doing anything else.
`protected int` `pos` Position in the buffer.
`protected ByteChunk` `readChunk` Byte chunk used to read bytes.
`protected int` `remaining` Number of bytes remaining in the current chunk.

Constructor Summary
`ChunkedInputFilter()`

Method Summary
`int` `doRead(ByteChunk chunk, Request req)` Read bytes.
`long` `end()` End the current request.
`ByteChunk` `getEncodingName()` Return the name of the associated encoding; Here, the value is "identity".
`protected boolean` `parseChunkHeader()` Parse the header of a chunk.
`protected boolean` `parseCRLF()` Parse CRLF at end of chunk.
`protected boolean` `parseEndChunk()` Parse end chunk data.
`protected int` `readBytes()` Read bytes from the previous buffer.
`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)` Read the content length from the 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 java.lang.String ENCODING_NAME

See Also:
  Constant Field Values

### ENCODING

    protected static final ByteChunk ENCODING

### buffer

    protected InputBuffer buffer

  Next buffer in the pipeline.

### remaining

    protected int remaining

  Number of bytes remaining in the current chunk.

### pos

    protected int pos

  Position in the buffer.

### lastValid

    protected int lastValid

  Last valid byte in the buffer.

### buf

    protected byte[] buf

  Read bytes buffer.

### readChunk

    protected ByteChunk readChunk

  Byte chunk used to read bytes.

### endChunk

    protected boolean endChunk

  Flag set to true when the end chunk has been read.

### needCRLFParse

    protected boolean needCRLFParse

  Flag set to true if the next call to doRead() must parse a CRLF pair before doing anything else.

Constructor Detail

### ChunkedInputFilter

    public ChunkedInputFilter()

Method Detail

### doRead

    public int doRead(ByteChunk chunk,
                      Request req)
               throws java.io.IOException

  Read bytes.

  Specified by:
    `doRead` in interface `InputFilter`
  Returns:
    If the filter does request length control, this value is significant; it should be the number of bytes consumed from the buffer, up until the end of the current request body, or the buffer length, whichever is greater. If the filter does not do request body length control, the returned value should be -1.
  Throws:
    `java.io.IOException`

### setRequest

    public void setRequest(Request request)

  Read the content length from the request.

  Specified by:
    `setRequest` in interface `InputFilter`

### end

    public long end()
             throws java.io.IOException

  End the current request.

  Specified by:
    `end` in interface `InputFilter`
  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:
    `java.io.IOException`

### setBuffer

    public void setBuffer(InputBuffer buffer)

  Set the next buffer in the filter pipeline.

  Specified by:
    `setBuffer` in interface `InputFilter`

### 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 "identity".

  Specified by:
    `getEncodingName` in interface `InputFilter`

### readBytes

    protected int readBytes()
                     throws java.io.IOException

  Read bytes from the previous buffer.

  Throws:
    `java.io.IOException`

### parseChunkHeader

    protected boolean parseChunkHeader()
                                throws java.io.IOException

  Parse the header of a chunk.

  Throws:
    `java.io.IOException`

### parseCRLF

    protected boolean parseCRLF()
                         throws java.io.IOException

  Parse CRLF at end of chunk.

  Throws:
    `java.io.IOException`

### parseEndChunk

    protected boolean parseEndChunk()
                             throws java.io.IOException

  Parse end chunk data. FIXME: Handle trailers

  Throws:
    `java.io.IOException`

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.