Top Description Inners Fields Constructors Methods
io.netty.handler.codec.http

public abstract Class HttpObjectDecoder

extends ByteToMessageDecoder
Class Inheritance
Known Direct Subclasses
io.netty.handler.codec.http.HttpRequestDecoder, io.netty.handler.codec.http.HttpResponseDecoder, io.netty.handler.codec.rtsp.RtspDecoder, io.netty.handler.codec.rtsp.RtspObjectDecoder
Imports
io.netty.buffer.ByteBuf, .Unpooled, io.netty.channel.ChannelHandlerContext, .ChannelPipeline, io.netty.handler.codec.ByteToMessageDecoder, .DecoderResult, .PrematureChannelClosureException, .TooLongFrameException, io.netty.util.AsciiString, .ByteProcessor, io.netty.util.internal.StringUtil, java.util.List, java.util.concurrent.atomic.AtomicBoolean

Decodes ByteBufs into HttpMessages and HttpContents.

Parameters that prevents excessive memory consumption

NameDefault valueMeaning
maxInitialLineLength 4096 The maximum length of the initial line (e.g. "GET / HTTP/1.0" or "HTTP/1.0 200 OK") If the length of the initial line exceeds this value, a TooLongHttpLineException will be raised.
maxHeaderSize 8192 The maximum length of all headers. If the sum of the length of each header exceeds this value, a TooLongHttpHeaderException will be raised.
maxChunkSize 8192 The maximum length of the content or each chunk. If the content length (or the length of each chunk) exceeds this value, the content or chunk will be split into multiple HttpContents whose length is maxChunkSize at maximum.

Parameters that control parsing behavior

NameDefault valueMeaning
allowDuplicateContentLengths false When set to false, will reject any messages that contain multiple Content-Length header fields. When set to true, will allow multiple Content-Length headers only if they are all the same decimal value. The duplicated field-values will be replaced with a single valid Content-Length field. See RFC 7230, Section 3.3.2.
allowPartialChunks true If the length of a chunk exceeds the ByteBufs readable bytes and allowPartialChunks is set to true, the chunk will be split into multiple HttpContents. Otherwise, if the chunk size does not exceed maxChunkSize and allowPartialChunks is set to false, the ByteBuf is not decoded into an HttpContent until the readable bytes are greater or equal to the chunk size.

Chunked Content

If the content of an HTTP message is greater than maxChunkSize or the transfer encoding of the HTTP message is 'chunked', this decoder generates one HttpMessage instance and its following HttpContents per single HTTP message to avoid excessive memory consumption. For example, the following HTTP message:
GET / HTTP/1.1
Transfer-Encoding: chunked

1a
abcdefghijklmnopqrstuvwxyz
10
1234567890abcdef
0
Content-MD5: ...
[blank line]
triggers HttpRequestDecoder to generate 3 objects:
  1. An HttpRequest,
  2. The first HttpContent whose content is 'abcdefghijklmnopqrstuvwxyz',
  3. The second LastHttpContent whose content is '1234567890abcdef', which marks the end of the content.
If you prefer not to handle HttpContents by yourself for your convenience, insert HttpObjectAggregator after this decoder in the ChannelPipeline. However, please note that your server might not be as memory efficient as without the aggregator.

Extensibility

Please note that this decoder is designed to be extended to implement a protocol derived from HTTP, such as RTSP and ICAP. To implement the decoder of such a derived protocol, extend this class and implement all abstract methods properly.

Header Validation

It is recommended to always enable header validation.

Without header validation, your system can become vulnerable to CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') .

This recommendation stands even when both peers in the HTTP exchange are trusted, as it helps with defence-in-depth.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
private class
private static enum

Field Summary

Modifier and TypeField and Description
private final boolean
private final boolean
private boolean
private final boolean
private long
private long
private HttpObjectDecoder.State
public static final boolean
public static final boolean
public static final boolean
public static final int
public static final int
public static final int
public static final int
public static final boolean
private final HttpObjectDecoder.HeaderParser
protected final HttpHeadersFactory
private static final boolean[]
private boolean
private static final boolean[]
private final HttpObjectDecoder.LineParser
private final int
private HttpMessage
private AsciiString
private final ByteBuf
private final AtomicBoolean
private static final ByteProcessor
private static final boolean[]
private LastHttpContent
protected final HttpHeadersFactory
protected final boolean
validateHeaders

This field is no longer used.

private String
Inherited from io.netty.handler.codec.ByteToMessageDecoder:
COMPOSITE_CUMULATORMERGE_CUMULATOR

Constructor Summary

AccessConstructor and Description
protected
HttpObjectDecoder()

Creates a new instance with the default maxInitialLineLength (4096), maxHeaderSize (8192), and maxChunkSize (8192).

protected
HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported)

Deprecated Use HttpObjectDecoder(HttpDecoderConfig) instead.
Creates a new instance with the specified parameters.
protected
HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders)

Deprecated Use HttpObjectDecoder(HttpDecoderConfig) instead.
Creates a new instance with the specified parameters.
protected
HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize)

Deprecated Use HttpObjectDecoder(HttpDecoderConfig) instead.
Creates a new instance with the specified parameters.
protected
HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)

Deprecated Use HttpObjectDecoder(HttpDecoderConfig) instead.
Creates a new instance with the specified parameters.
protected
HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)

Deprecated Use HttpObjectDecoder(HttpDecoderConfig) instead.
Creates a new instance with the specified parameters.
protected
HttpObjectDecoder(HttpDecoderConfig config)

Creates a new instance with the specified configuration.

Method Summary

Modifier and TypeMethod and Description
private void
protected abstract HttpMessage
protected abstract HttpMessage
createMessage(String[] initialLine)

protected void
decode(ChannelHandlerContext ctx, ByteBuf
the ByteBuf from which to read data
buffer
,
List<Object>
the List to which decoded messages should be added
out
)

Implements abstract io.netty.handler.codec.ByteToMessageDecoder.decode.

Decode the from one ByteBuf to an other.
protected void
private static int
findEndOfString(byte[] sb, int start, int end)

private static int
findNonSPLenient(byte[] sb, int offset, int end)

private static int
findNonWhitespace(byte[] sb, int offset, int end)

private static int
findSPLenient(byte[] sb, int offset, int end)

private static int
getChunkSize(byte[] hex, int start, int length)

protected void
handlerRemoved0(ChannelHandlerContext ctx)

Overrides io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved0.

Gets called after the ByteToMessageDecoder was removed from the actual context and it doesn't handle events anymore.
protected void
handleTransferEncodingChunkedWithContentLength(HttpMessage message)

Invoked when a message with both a "Transfer-Encoding: chunked" and a "Content-Length" header field is detected.

private HttpContent
private HttpMessage
protected boolean
private static boolean
protected abstract boolean
private static boolean
isOWS(byte ch)

private static boolean
isSPLenient(byte c)

protected boolean
isSwitchingToNonHttp1Protocol(HttpResponse msg)

Returns true if the server switched to a different protocol than HTTP/1.0 or HTTP/1.1, e.g. HTTP/2 or Websocket.

protected boolean
private static boolean
isWhitespace(byte b)

private static String
langAsciiString(final byte[] asciiContent, int start, int length)

This method shouldn't exist: look at https://bugs.openjdk.org/browse/JDK-8295496 for more context

private HttpObjectDecoder.State
private LastHttpContent
public void
reset()

Resets the state of the decoder so that it is ready to decode a new message.

private void
private static int
skipWhiteSpaces(byte[] hex, int start, int length)

It skips any whitespace char and return the number of skipped bytes.

protected String
splitFirstWordInitialLine(final byte[] asciiContent, int start, int length)

private void
splitHeader(byte[] line, int start, int length)

protected AsciiString
splitHeaderName(byte[] sb, int start, int length)

private String[]
protected String
splitSecondWordInitialLine(final byte[] asciiContent, int start, int length)

protected String
splitThirdWordInitialLine(final byte[] asciiContent, int start, int length)

public void
Inherited from io.netty.handler.codec.ByteToMessageDecoder:
actualReadableBytescallDecodechannelInactivechannelReadchannelReadCompletediscardSomeReadByteshandlerRemovedinternalBufferisSingleDecodesetCumulatorsetDiscardAfterReadssetSingleDecode

Field Detail

allowDuplicateContentLengthsback to summary
private final boolean allowDuplicateContentLengths
allowPartialChunksback to summary
private final boolean allowPartialChunks
chunkedback to summary
private boolean chunked
chunkedSupportedback to summary
private final boolean chunkedSupported
chunkSizeback to summary
private long chunkSize
contentLengthback to summary
private long contentLength
currentStateback to summary
private HttpObjectDecoder.State currentState
DEFAULT_ALLOW_DUPLICATE_CONTENT_LENGTHSback to summary
public static final boolean DEFAULT_ALLOW_DUPLICATE_CONTENT_LENGTHS
DEFAULT_ALLOW_PARTIAL_CHUNKSback to summary
public static final boolean DEFAULT_ALLOW_PARTIAL_CHUNKS
DEFAULT_CHUNKED_SUPPORTEDback to summary
public static final boolean DEFAULT_CHUNKED_SUPPORTED
DEFAULT_INITIAL_BUFFER_SIZEback to summary
public static final int DEFAULT_INITIAL_BUFFER_SIZE
DEFAULT_MAX_CHUNK_SIZEback to summary
public static final int DEFAULT_MAX_CHUNK_SIZE
DEFAULT_MAX_HEADER_SIZEback to summary
public static final int DEFAULT_MAX_HEADER_SIZE
DEFAULT_MAX_INITIAL_LINE_LENGTHback to summary
public static final int DEFAULT_MAX_INITIAL_LINE_LENGTH
DEFAULT_VALIDATE_HEADERSback to summary
public static final boolean DEFAULT_VALIDATE_HEADERS
headerParserback to summary
private final HttpObjectDecoder.HeaderParser headerParser
headersFactoryback to summary
protected final HttpHeadersFactory headersFactory
ISO_CONTROL_OR_WHITESPACEback to summary
private static final boolean[] ISO_CONTROL_OR_WHITESPACE
isSwitchingToNonHttp1Protocolback to summary
private boolean isSwitchingToNonHttp1Protocol
LATIN_WHITESPACEback to summary
private static final boolean[] LATIN_WHITESPACE
lineParserback to summary
private final HttpObjectDecoder.LineParser lineParser
maxChunkSizeback to summary
private final int maxChunkSize
messageback to summary
private HttpMessage message
nameback to summary
private AsciiString name
parserScratchBufferback to summary
private final ByteBuf parserScratchBuffer
resetRequestedback to summary
private final AtomicBoolean resetRequested
SKIP_CONTROL_CHARS_BYTESback to summary
private static final ByteProcessor SKIP_CONTROL_CHARS_BYTES
SP_LENIENT_BYTESback to summary
private static final boolean[] SP_LENIENT_BYTES
trailerback to summary
private LastHttpContent trailer
trailersFactoryback to summary
protected final HttpHeadersFactory trailersFactory
validateHeadersback to summary
protected final boolean validateHeaders

Deprecated

This field is no longer used. It is only kept around for backwards compatibility purpose.

Annotations
@Deprecated
valueback to summary
private String value

Constructor Detail

HttpObjectDecoderback to summary
protected HttpObjectDecoder()

Creates a new instance with the default maxInitialLineLength (4096), maxHeaderSize (8192), and maxChunkSize (8192).

HttpObjectDecoderback to summary
protected HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported)

Deprecated

Use HttpObjectDecoder(HttpDecoderConfig) instead.

Creates a new instance with the specified parameters.

Annotations
@Deprecated
HttpObjectDecoderback to summary
protected HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders)

Deprecated

Use HttpObjectDecoder(HttpDecoderConfig) instead.

Creates a new instance with the specified parameters.

Annotations
@Deprecated
HttpObjectDecoderback to summary
protected HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize)

Deprecated

Use HttpObjectDecoder(HttpDecoderConfig) instead.

Creates a new instance with the specified parameters.

Annotations
@Deprecated
HttpObjectDecoderback to summary
protected HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)

Deprecated

Use HttpObjectDecoder(HttpDecoderConfig) instead.

Creates a new instance with the specified parameters.

Annotations
@Deprecated
HttpObjectDecoderback to summary
protected HttpObjectDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean chunkedSupported, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)

Deprecated

Use HttpObjectDecoder(HttpDecoderConfig) instead.

Creates a new instance with the specified parameters.

Annotations
@Deprecated
HttpObjectDecoderback to summary
protected HttpObjectDecoder(HttpDecoderConfig config)

Creates a new instance with the specified configuration.

Method Detail

addCurrentMessageback to summary
private void addCurrentMessage(List<Object> out)
createInvalidMessageback to summary
protected abstract HttpMessage createInvalidMessage()
createMessageback to summary
protected abstract HttpMessage createMessage(String[] initialLine) throws Exception
decodeback to summary
protected void decode(ChannelHandlerContext ctx, ByteBuf buffer, List<Object> out) throws Exception

Implements abstract io.netty.handler.codec.ByteToMessageDecoder.decode.

Doc from io.netty.handler.codec.ByteToMessageDecoder.decode.

Decode the from one ByteBuf to an other. This method will be called till either the input ByteBuf has nothing to read when return from this method or till nothing was read from the input ByteBuf.

Parameters
ctx:ChannelHandlerContext

the ChannelHandlerContext which this ByteToMessageDecoder belongs to

buffer:ByteBuf

the ByteBuf from which to read data

out:List<Object>

the List to which decoded messages should be added

Annotations
@Override
Exceptions
Exception:
is thrown if an error occurs
decodeLastback to summary
protected void decodeLast(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception

Overrides io.netty.handler.codec.ByteToMessageDecoder.decodeLast.

Doc from io.netty.handler.codec.ByteToMessageDecoder.decodeLast.

Is called one last time when the ChannelHandlerContext goes in-active. Which means the channelInactive(ChannelHandlerContext) was triggered. By default, this will just call decode(ChannelHandlerContext, ByteBuf, List) but sub-classes may override this for some special cleanup operation.

Annotations
@Override
findEndOfStringback to summary
private static int findEndOfString(byte[] sb, int start, int end)
findNonSPLenientback to summary
private static int findNonSPLenient(byte[] sb, int offset, int end)
findNonWhitespaceback to summary
private static int findNonWhitespace(byte[] sb, int offset, int end)
findSPLenientback to summary
private static int findSPLenient(byte[] sb, int offset, int end)
getChunkSizeback to summary
private static int getChunkSize(byte[] hex, int start, int length)
handlerRemoved0back to summary
protected void handlerRemoved0(ChannelHandlerContext ctx) throws Exception

Overrides io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved0.

Doc from io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved0.

Gets called after the ByteToMessageDecoder was removed from the actual context and it doesn't handle events anymore.

Annotations
@Override
handleTransferEncodingChunkedWithContentLengthback to summary
protected void handleTransferEncodingChunkedWithContentLength(HttpMessage message)

Invoked when a message with both a "Transfer-Encoding: chunked" and a "Content-Length" header field is detected. The default behavior is to remove the Content-Length field, but this method could be overridden to change the behavior (to, e.g., throw an exception and produce an invalid message).

See: https://tools.ietf.org/html/rfc7230#section-3.3.3

    If a message is received with both a Transfer-Encoding and a
    Content-Length header field, the Transfer-Encoding overrides the
    Content-Length.  Such a message might indicate an attempt to
    perform request smuggling (Section 9.5) or response splitting
    (Section 9.4) and ought to be handled as an error.  A sender MUST
    remove the received Content-Length field prior to forwarding such
    a message downstream.
Also see: https://github.com/apache/tomcat/blob/b693d7c1981fa7f51e58bc8c8e72e3fe80b7b773/ java/org/apache/coyote/http11/Http11Processor.java#L747-L755 https://github.com/nginx/nginx/blob/0ad4393e30c119d250415cb769e3d8bc8dce5186/ src/http/ngx_http_request.c#L1946-L1953
invalidChunkback to summary
private HttpContent invalidChunk(ByteBuf in, Exception cause)
invalidMessageback to summary
private HttpMessage invalidMessage(HttpMessage current, ByteBuf in, Exception cause)
isContentAlwaysEmptyback to summary
protected boolean isContentAlwaysEmpty(HttpMessage msg)
isControlOrWhitespaceAsciiCharback to summary
private static boolean isControlOrWhitespaceAsciiChar(byte b)
isDecodingRequestback to summary
protected abstract boolean isDecodingRequest()
isOWSback to summary
private static boolean isOWS(byte ch)
isSPLenientback to summary
private static boolean isSPLenient(byte c)
isSwitchingToNonHttp1Protocolback to summary
protected boolean isSwitchingToNonHttp1Protocol(HttpResponse msg)

Returns true if the server switched to a different protocol than HTTP/1.0 or HTTP/1.1, e.g. HTTP/2 or Websocket. Returns false if the upgrade happened in a different layer, e.g. upgrade from HTTP/1.1 to HTTP/1.1 over TLS.

isValidatingback to summary
protected boolean isValidating(HttpHeadersFactory headersFactory)
isWhitespaceback to summary
private static boolean isWhitespace(byte b)
langAsciiStringback to summary
private static String langAsciiString(final byte[] asciiContent, int start, int length)

This method shouldn't exist: look at https://bugs.openjdk.org/browse/JDK-8295496 for more context

readHeadersback to summary
private HttpObjectDecoder.State readHeaders(ByteBuf buffer)
readTrailingHeadersback to summary
private LastHttpContent readTrailingHeaders(ByteBuf buffer)
resetback to summary
public void reset()

Resets the state of the decoder so that it is ready to decode a new message. This method is useful for handling a rejected request with Expect: 100-continue header.

resetNowback to summary
private void resetNow()
skipWhiteSpacesback to summary
private static int skipWhiteSpaces(byte[] hex, int start, int length)

It skips any whitespace char and return the number of skipped bytes.

splitFirstWordInitialLineback to summary
protected String splitFirstWordInitialLine(final byte[] asciiContent, int start, int length)
splitHeaderback to summary
private void splitHeader(byte[] line, int start, int length)
splitHeaderNameback to summary
protected AsciiString splitHeaderName(byte[] sb, int start, int length)
splitInitialLineback to summary
private String[] splitInitialLine(ByteBuf asciiBuffer)
splitSecondWordInitialLineback to summary
protected String splitSecondWordInitialLine(final byte[] asciiContent, int start, int length)
splitThirdWordInitialLineback to summary
protected String splitThirdWordInitialLine(final byte[] asciiContent, int start, int length)
userEventTriggeredback to summary
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception

Overrides io.netty.handler.codec.ByteToMessageDecoder.userEventTriggered.

Implements io.netty.channel.ChannelInboundHandler.userEventTriggered.

Doc from io.netty.channel.ChannelInboundHandlerAdapter.userEventTriggered.

Calls ChannelHandlerContext#fireUserEventTriggered(Object) to forward to the next ChannelInboundHandler in the ChannelPipeline. Sub-classes may override this method to change behavior.

Annotations
@Override
io.netty.handler.codec.http back to summary

private Class HttpObjectDecoder.HeaderParser

extends Object
Class Inheritance
Known Direct Subclasses
io.netty.handler.codec.http.HttpObjectDecoder.LineParser

Field Summary

Modifier and TypeField and Description
protected final int
protected final ByteBuf
pack-priv int

Constructor Summary

AccessConstructor and Description
pack-priv
HeaderParser(ByteBuf seq, int maxLength)

Method Summary

Modifier and TypeMethod and Description
protected TooLongFrameException
newException(int maxLength)

public ByteBuf
parse(ByteBuf buffer)

public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

maxLengthback to summary
protected final int maxLength
seqback to summary
protected final ByteBuf seq
sizeback to summary
pack-priv int size

Constructor Detail

HeaderParserback to summary
pack-priv HeaderParser(ByteBuf seq, int maxLength)

Method Detail

newExceptionback to summary
protected TooLongFrameException newException(int maxLength)
parseback to summary
public ByteBuf parse(ByteBuf buffer)
resetback to summary
public void reset()
io.netty.handler.codec.http back to summary

private final Class HttpObjectDecoder.LineParser

extends HeaderParser
Class Inheritance

Field Summary

Inherited from io.netty.handler.codec.http.HttpObjectDecoder.HeaderParser:
maxLengthseqsize

Constructor Summary

AccessConstructor and Description
pack-priv
LineParser(ByteBuf seq, int maxLength)

Method Summary

Modifier and TypeMethod and Description
protected TooLongFrameException
public ByteBuf
private boolean
skipControlChars(ByteBuf buffer, int readableBytes, int readerIndex)

Inherited from io.netty.handler.codec.http.HttpObjectDecoder.HeaderParser:
reset

Constructor Detail

LineParserback to summary
pack-priv LineParser(ByteBuf seq, int maxLength)

Method Detail

newExceptionback to summary
protected TooLongFrameException newException(int maxLength)

Overrides io.netty.handler.codec.http.HttpObjectDecoder.HeaderParser.newException.

Annotations
@Override
parseback to summary
public ByteBuf parse(ByteBuf buffer)

Overrides io.netty.handler.codec.http.HttpObjectDecoder.HeaderParser.parse.

Annotations
@Override
skipControlCharsback to summary
private boolean skipControlChars(ByteBuf buffer, int readableBytes, int readerIndex)
io.netty.handler.codec.http back to summary

private final Enum HttpObjectDecoder.State

extends Enum<HttpObjectDecoder.State>
Class Inheritance

The internal state of HttpObjectDecoder. Internal use only.

Field Summary

Modifier and TypeField and Description
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State
public static final HttpObjectDecoder.State

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static HttpObjectDecoder.State
public static HttpObjectDecoder.State[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

BAD_MESSAGEback to summary
public static final HttpObjectDecoder.State BAD_MESSAGE
READ_CHUNK_DELIMITERback to summary
public static final HttpObjectDecoder.State READ_CHUNK_DELIMITER
READ_CHUNK_SIZEback to summary
public static final HttpObjectDecoder.State READ_CHUNK_SIZE
READ_CHUNKED_CONTENTback to summary
public static final HttpObjectDecoder.State READ_CHUNKED_CONTENT
READ_FIXED_LENGTH_CONTENTback to summary
public static final HttpObjectDecoder.State READ_FIXED_LENGTH_CONTENT
READ_HEADERback to summary
public static final HttpObjectDecoder.State READ_HEADER
READ_INITIALback to summary
public static final HttpObjectDecoder.State READ_INITIAL
READ_VARIABLE_LENGTH_CONTENTback to summary
public static final HttpObjectDecoder.State READ_VARIABLE_LENGTH_CONTENT
SKIP_CONTROL_CHARSback to summary
public static final HttpObjectDecoder.State SKIP_CONTROL_CHARS
UPGRADEDback to summary
public static final HttpObjectDecoder.State UPGRADED

Constructor Detail

Stateback to summary
private State()

Method Detail

valueOfback to summary
public static HttpObjectDecoder.State valueOf(String name)
valuesback to summary
public static HttpObjectDecoder.State[] values()