org.apache.coyote.http11.filters

Class ChunkedInputFilter

Implemented Interfaces:
InputBuffer, InputFilter

public class ChunkedInputFilter
extends java.lang.Object
implements InputFilter

Chunked input filter.

Author:
Remy Maucherat

Field Summary

protected static ByteChunk
ENCODING
protected static String
ENCODING_NAME
protected byte[]
buf
Read bytes buffer.
protected InputBuffer
buffer
Next buffer in the pipeline.
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.

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
parseCRLF()
Parse CRLF at end of chunk.
protected boolean
parseChunkHeader()
Parse the header of a 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.

Field Details

ENCODING

protected static final ByteChunk ENCODING


ENCODING_NAME

protected static final String ENCODING_NAME


buf

protected byte[] buf
Read bytes buffer.


buffer

protected InputBuffer buffer
Next buffer in the pipeline.


endChunk

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


lastValid

protected int lastValid
Last valid byte in the buffer.


needCRLFParse

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


pos

protected int pos
Position in the buffer.


readChunk

protected ByteChunk readChunk
Byte chunk used to read bytes.


remaining

protected int remaining
Number of bytes remaining in the current chunk.

Method Details

doRead

public int doRead(ByteChunk chunk,
                  Request req)
            throws IOException
Read bytes.
Specified by:
doRead in interface InputFilter
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.


end

public long end()
            throws IOException
End the current request.
Specified by:
end 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


parseCRLF

protected boolean parseCRLF()
            throws IOException
Parse CRLF at end of chunk.


parseChunkHeader

protected boolean parseChunkHeader()
            throws IOException
Parse the header of a chunk.


parseEndChunk

protected boolean parseEndChunk()
            throws IOException
Parse end chunk data. FIXME: Handle trailers


readBytes

protected int readBytes()
            throws IOException
Read bytes from the previous buffer.


recycle

public void recycle()
Make the filter ready to process the next request.
Specified by:
recycle in interface InputFilter


setBuffer

public void setBuffer(InputBuffer buffer)
Set the next buffer in the filter pipeline.
Specified by:
setBuffer in interface InputFilter


setRequest

public void setRequest(Request request)
Read the content length from the request.
Specified by:
setRequest in interface InputFilter


Copyright B) 2000-2003 Apache Software Foundation. All Rights Reserved.