public class ChunkedInputFilter extends java.lang.Object implements InputFilter
Modifier and Type | Field and Description |
---|---|
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.
|
protected ByteChunk |
trailingHeaders
Byte chunk used to store trailing headers.
|
Constructor and Description |
---|
ChunkedInputFilter(int maxTrailerSize,
java.util.Set<java.lang.String> allowedTrailerHeaders,
int maxExtensionSize,
int maxSwallowSize) |
Modifier and Type | Method and Description |
---|---|
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".
|
boolean |
isFinished()
Has the request body been read fully?
|
protected boolean |
parseChunkHeader()
Parse the header of a chunk.
|
protected void |
parseCRLF(boolean tolerant)
Parse CRLF at end of chunk.
|
protected void |
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.
|
protected static final java.lang.String ENCODING_NAME
protected static final ByteChunk ENCODING
protected InputBuffer buffer
protected int remaining
protected int pos
protected int lastValid
protected byte[] buf
protected final ByteChunk readChunk
protected boolean endChunk
protected final ByteChunk trailingHeaders
protected boolean needCRLFParse
public ChunkedInputFilter(int maxTrailerSize, java.util.Set<java.lang.String> allowedTrailerHeaders, int maxExtensionSize, int maxSwallowSize)
public int doRead(ByteChunk chunk, Request req) throws java.io.IOException
doRead
in interface InputFilter
doRead
in interface InputBuffer
java.io.IOException
public void setRequest(Request request)
setRequest
in interface InputFilter
public long end() throws java.io.IOException
end
in interface InputFilter
java.io.IOException
public int available()
available
in interface InputFilter
public void setBuffer(InputBuffer buffer)
setBuffer
in interface InputFilter
public void recycle()
recycle
in interface InputFilter
public ByteChunk getEncodingName()
getEncodingName
in interface InputFilter
public boolean isFinished()
InputFilter
isFinished
in interface InputFilter
protected int readBytes() throws java.io.IOException
java.io.IOException
protected boolean parseChunkHeader() throws java.io.IOException
The letters before CRLF or ';' (whatever comes first) must be valid hex digits. We should not parse F23IAMGONNAMESSTHISUP34CRLF as a valid header according to the spec.
java.io.IOException
protected void parseCRLF(boolean tolerant) throws java.io.IOException
tolerant
- Should tolerant parsing (LF and CRLF) be used? This
is recommended (RFC2616, section 19.3) for message
headers.java.io.IOException
protected void parseEndChunk() throws java.io.IOException
java.io.IOException
Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.