|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.glassfish.grizzly.filterchain.BaseFilter
org.glassfish.grizzly.http.HttpCodecFilter
public abstract class HttpCodecFilter
The Filter, responsible for transforming Buffer into
HttpPacket and vice versa in asynchronous mode.
When the HttpCodecFilter is added to a FilterChain, on read phase
it consumes incoming Buffer and provides HttpContent as
the result of transformation. On write phase the HttpCodecFilter consumes
input HttpPacket and serializes it to a Buffer, which
gets passed farther as the result of transformation.
So transformations, provided by this filter are following:
(read phase): Buffer -> HttpContent
(write phase): HttpPacket -> Buffer.
HttpServerFilter,
HttpClientFilter| Nested Class Summary | |
|---|---|
protected static class |
HttpCodecFilter.ContentParsingState
|
protected static class |
HttpCodecFilter.HeaderParsingState
|
| Field Summary | |
|---|---|
protected boolean |
chunkingEnabled
|
protected ArraySet<ContentEncoding> |
contentEncodings
|
static int |
DEFAULT_MAX_HTTP_PACKET_HEADER_SIZE
|
protected int |
maxHeadersSize
|
protected AbstractJmxMonitoringConfig<HttpProbe> |
monitoringConfig
File cache probes |
| Constructor Summary | |
|---|---|
HttpCodecFilter(boolean chunkingEnabled,
int maxHeadersSize)
Constructor, which creates HttpCodecFilter instance, with the specific max header size parameter. |
|
| Method Summary | |
|---|---|
void |
addContentEncoding(ContentEncoding contentEncoding)
Adds the specified ContentEncoding to the HttpCodecFilter. |
void |
addTransferEncoding(TransferEncoding transferEncoding)
Adds the specified TransferEncoding to the HttpCodecFilter. |
protected static int |
checkEOL(HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
|
protected JmxObject |
createJmxManagementObject()
|
protected boolean |
decodeHttpPacket(FilterChainContext ctx,
HttpPacketParsing httpPacket,
Buffer input)
|
protected Buffer |
encodeHttpPacket(FilterChainContext ctx,
HttpPacket input)
|
protected static Buffer |
encodeKnownHeaders(MemoryManager memoryManager,
Buffer buffer,
HttpHeader httpHeader)
|
protected static Buffer |
encodeMimeHeader(MemoryManager memoryManager,
Buffer buffer,
DataChunk name,
DataChunk value,
boolean encodeLastCRLF)
|
protected static Buffer |
encodeMimeHeaders(MemoryManager memoryManager,
Buffer buffer,
MimeHeaders mimeHeaders)
|
protected static boolean |
findEOL(HttpCodecFilter.HeaderParsingState state,
Buffer input)
|
protected static int |
findSpace(Buffer input,
int offset,
int packetLimit)
|
ContentEncoding[] |
getContentEncodings()
Gets registered ContentEncodings. |
JmxMonitoringConfig<HttpProbe> |
getMonitoringConfig()
|
TransferEncoding[] |
getTransferEncodings()
Gets registered TransferEncodings. |
NextAction |
handleRead(FilterChainContext ctx,
HttpPacketParsing httpPacket)
The method is called by the specific HttpCodecFilter implementation, once we have received a Buffer, which has to be transformed
into HTTP packet part. |
NextAction |
handleWrite(FilterChainContext ctx)
The method is called, once we need to serialize a HttpPacket,
which may represent HTTP packet header, content or content chunk. |
protected static int |
indexOf(Buffer input,
int offset,
byte b,
int packetLimit)
|
protected boolean |
isChunkingEnabled()
Return true if chunked transfer-encoding may be used. |
protected static boolean |
isSecure(Connection connection)
flag, which indicates whether this HttpCodecFilter is dealing with the secured HTTP packets. |
protected abstract void |
onHttpContentEncoded(HttpContent content,
FilterChainContext ctx)
Invoked when a HTTP body chunk has been encoded in preparation to being transmitted to the user-agent. |
protected abstract void |
onHttpContentParsed(HttpContent content,
FilterChainContext ctx)
Invoked as request/response body content has been processed by this Filter. |
protected abstract void |
onHttpError(HttpHeader httpHeader,
FilterChainContext ctx)
Callback which is invoked when parsing an HTTP message fails. |
protected abstract boolean |
onHttpHeaderParsed(HttpHeader httpHeader,
Buffer buffer,
FilterChainContext ctx)
Callback invoked when the HTTP message header parsing is complete. |
protected abstract void |
onHttpHeadersEncoded(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when HTTP headers have been encoded in preparation to being transmitted to the user-agent. |
protected abstract void |
onHttpHeadersParsed(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when all headers of the packet have been parsed. |
protected abstract boolean |
onHttpPacketParsed(HttpHeader httpHeader,
FilterChainContext ctx)
Callback method, called when HttpPacket parsing has been completed. |
protected abstract void |
onInitialLineEncoded(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when the intial response line has been encoded in preparation to being transmitted to the user-agent. |
protected abstract void |
onInitialLineParsed(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when either the request line or status line has been parsed. |
protected static boolean |
parseHeader(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
|
protected static boolean |
parseHeaderName(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
|
protected boolean |
parseHeaders(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
|
protected static int |
parseHeaderValue(HttpHeader httpHeader,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
|
boolean |
removeContentEncoding(ContentEncoding contentEncoding)
Removes the specified ContentEncoding from the HttpCodecFilter. |
boolean |
removeTransferEncoding(TransferEncoding transferEncoding)
Removes the specified TransferEncoding from the HttpCodecFilter. |
protected static int |
skipSpaces(Buffer input,
int offset,
int packetLimit)
|
| Methods inherited from class org.glassfish.grizzly.filterchain.BaseFilter |
|---|
createContext, exceptionOccurred, getFilterChain, getIndex, handleAccept, handleClose, handleConnect, handleEvent, handleRead, onAdded, onFilterChainChanged, onRemoved |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int DEFAULT_MAX_HTTP_PACKET_HEADER_SIZE
protected final ArraySet<ContentEncoding> contentEncodings
protected final boolean chunkingEnabled
protected final AbstractJmxMonitoringConfig<HttpProbe> monitoringConfig
protected final int maxHeadersSize
| Constructor Detail |
|---|
public HttpCodecFilter(boolean chunkingEnabled,
int maxHeadersSize)
chunkingEnabled - true if the chunked transfer encoding
should be used when no explicit content length has been set.maxHeadersSize - the maximum size of the HTTP message header.| Method Detail |
|---|
protected abstract boolean onHttpPacketParsed(HttpHeader httpHeader,
FilterChainContext ctx)
HttpPacket parsing has been completed.
httpHeader - HttpHeader, which represents parsed HTTP packet headerctx - processing context.
true if an error has occurred while processing
the header portion of the HTTP request, otherwise returns
false.s
protected abstract boolean onHttpHeaderParsed(HttpHeader httpHeader,
Buffer buffer,
FilterChainContext ctx)
httpHeader - HttpHeader, which represents parsed HTTP packet headerbuffer - Buffer the header was parsed fromctx - processing context.
true if an error has occurred while processing
the header portion of the HTTP request, otherwise returns
false.
protected abstract void onInitialLineParsed(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when either the request line or status line has been parsed.
httpHeader - HttpHeader, which represents HTTP packet headerctx - processing context.
protected abstract void onInitialLineEncoded(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when the intial response line has been encoded in preparation to being transmitted to the user-agent.
httpHeader - HttpHeader, which represents HTTP packet headerctx - processing context.
protected abstract void onHttpHeadersParsed(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when all headers of the packet have been parsed. Depending on the transfer encoding being used by the current request, this method may be invoked multiple times.
httpHeader - HttpHeader, which represents HTTP packet headerctx - processing context.
protected abstract void onHttpHeadersEncoded(HttpHeader httpHeader,
FilterChainContext ctx)
Invoked when HTTP headers have been encoded in preparation to being transmitted to the user-agent.
httpHeader - HttpHeader, which represents HTTP packet headerctx - processing context.
protected abstract void onHttpContentParsed(HttpContent content,
FilterChainContext ctx)
Invoked as request/response body content has been processed by this
Filter.
content - request/response body contentctx - processing context.
protected abstract void onHttpContentEncoded(HttpContent content,
FilterChainContext ctx)
Invoked when a HTTP body chunk has been encoded in preparation to being transmitted to the user-agent.
content - HttpContent, which represents HTTP packet headerctx - processing context.
protected abstract void onHttpError(HttpHeader httpHeader,
FilterChainContext ctx)
throws java.io.IOException
Callback which is invoked when parsing an HTTP message fails. The processing logic has to take care about error handling and following connection closing.
httpHeader - HttpHeader, which represents HTTP packet headerctx - the FilterChainContext processing this request
java.io.IOExceptionpublic TransferEncoding[] getTransferEncodings()
Gets registered TransferEncodings.
TransferEncodings.public void addTransferEncoding(TransferEncoding transferEncoding)
Adds the specified TransferEncoding to the HttpCodecFilter.
transferEncoding - the TransferEncoding to addpublic boolean removeTransferEncoding(TransferEncoding transferEncoding)
Removes the specified TransferEncoding from the HttpCodecFilter.
transferEncoding - the TransferEncoding to remove
true if the TransferEncoding was removed, otherwise
false indicating the TransferEncoding was not already
presentpublic ContentEncoding[] getContentEncodings()
Gets registered ContentEncodings.
ContentEncodings.public void addContentEncoding(ContentEncoding contentEncoding)
Adds the specified ContentEncoding to the HttpCodecFilter.
contentEncoding - the ContentEncoding to addpublic boolean removeContentEncoding(ContentEncoding contentEncoding)
Removes the specified ContentEncoding from the HttpCodecFilter.
contentEncoding - the ContentEncoding to remove
true if the ContentEncoding was removed, otherwise
false indicating the ContentEncoding was not already
presentprotected boolean isChunkingEnabled()
true if chunked transfer-encoding may be used.
true if chunked transfer-encoding may be used.
public final NextAction handleRead(FilterChainContext ctx,
HttpPacketParsing httpPacket)
throws java.io.IOException
Buffer, which has to be transformed
into HTTP packet part.
Filter gets Buffer, which represents a part or complete HTTP
message. As the result of "read" transformation - we will get
HttpContent message, which will represent HTTP packet content
(might be zero length content) and reference to a HttpHeader,
which contains HTTP message header.
ctx - Request processing contexthttpPacket - the current HttpPacket, which is being processed.
NextAction
java.io.IOException
public NextAction handleWrite(FilterChainContext ctx)
throws java.io.IOException
HttpPacket,
which may represent HTTP packet header, content or content chunk.
Filter gets HttpPacket, which represents a HTTP header, content,
or content part. As the result of "write" transformation - we will get
Buffer, which will represent serialized HTTP packet.
handleWrite in interface FilterhandleWrite in class BaseFilterctx - Request processing context
NextAction
java.io.IOException
protected boolean decodeHttpPacket(FilterChainContext ctx,
HttpPacketParsing httpPacket,
Buffer input)
protected Buffer encodeHttpPacket(FilterChainContext ctx,
HttpPacket input)
protected static Buffer encodeKnownHeaders(MemoryManager memoryManager,
Buffer buffer,
HttpHeader httpHeader)
protected static Buffer encodeMimeHeaders(MemoryManager memoryManager,
Buffer buffer,
MimeHeaders mimeHeaders)
protected static Buffer encodeMimeHeader(MemoryManager memoryManager,
Buffer buffer,
DataChunk name,
DataChunk value,
boolean encodeLastCRLF)
protected boolean parseHeaders(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
protected static boolean parseHeader(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
protected static boolean parseHeaderName(HttpHeader httpHeader,
MimeHeaders mimeHeaders,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
protected static int parseHeaderValue(HttpHeader httpHeader,
HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
protected static int checkEOL(HttpCodecFilter.HeaderParsingState parsingState,
Buffer input)
protected static boolean findEOL(HttpCodecFilter.HeaderParsingState state,
Buffer input)
protected static int findSpace(Buffer input,
int offset,
int packetLimit)
protected static int skipSpaces(Buffer input,
int offset,
int packetLimit)
protected static int indexOf(Buffer input,
int offset,
byte b,
int packetLimit)
protected static boolean isSecure(Connection connection)
HttpRequestPacket or
HttpResponsePacket.
public JmxMonitoringConfig<HttpProbe> getMonitoringConfig()
getMonitoringConfig in interface JmxMonitoringAware<HttpProbe>getMonitoringConfig in interface MonitoringAware<HttpProbe>protected JmxObject createJmxManagementObject()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||