ChunkedInputFilter (Tomcat API Documentation)
Keywords: org.apache.coyote.http11.filters.ChunkedInputFilter class

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

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

All Implemented Interfaces:
  InputFilter, InputBuffer

    public class ChunkedInputFilter

extends java.lang.Object
implements InputFilter

Chunked input filter. Parses chunked data according to http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6.1

Author:
  Remy Maucherat, Filip Hanik

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` | `available()` Amount of bytes still available in a buffer.
`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`
  Specified by:
    `doRead` in interface `InputBuffer`
  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`

### available

    public int available()

  Amount of bytes still available in a buffer.

  Specified by:
    `available` in interface `InputFilter`

### 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. A chunk header can look like A10CRLF F23;chunk-extension to be ignoredCRLF The letters before CRLF but after the trailer mark, must be valid hex digits, we should not parse F23IAMGONNAMESSTHISUP34CRLF as a valid header according to spec

  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`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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