org.jboss.netty.handler.codec.http2
Class HttpContentDecoder
java.lang.Object
org.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.codec.http2.HttpContentDecoder
- All Implemented Interfaces:
- org.jboss.netty.channel.ChannelHandler, org.jboss.netty.channel.ChannelUpstreamHandler
- Direct Known Subclasses:
- HttpContentDecompressor
public abstract class HttpContentDecoder
- extends org.jboss.netty.channel.SimpleChannelUpstreamHandler
Decodes the content of the received HttpRequest
and HttpChunk
.
The original content is replaced with the new content decoded by the
DecoderEmbedder
, which is created by newContentDecoder(String)
.
Once decoding is finished, the value of the 'Content-Encoding'
header is set to the target content encoding, as returned by getTargetContentEncoding(String)
.
Also, the 'Content-Length' header is updated to the length of the
decoded content. If the content encoding of the original is not supported
by the decoder, newContentDecoder(String)
should return null
so that no decoding occurs (i.e. pass-through).
Please note that this is an abstract class. You have to extend this class
and implement newContentDecoder(String)
properly to make this class
functional. For example, refer to the source code of HttpContentDecompressor
.
This handler must be placed after HttpMessageDecoder
in the pipeline
so that this handler can intercept HTTP requests after HttpMessageDecoder
converts ChannelBuffer
s into HTTP requests.
- Version:
- $Rev: 1107 $, $Date: 2012-04-15 19:00:57 +0200 (dim., 15 avr. 2012) $
- Author:
- The Netty Project, Trustin Lee
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler |
org.jboss.netty.channel.ChannelHandler.Sharable |
Method Summary |
protected String |
getTargetContentEncoding(String contentEncoding)
Returns the expected content encoding of the decoded content. |
void |
messageReceived(org.jboss.netty.channel.ChannelHandlerContext ctx,
org.jboss.netty.channel.MessageEvent e)
|
protected abstract org.jboss.netty.handler.codec.embedder.DecoderEmbedder<org.jboss.netty.buffer.ChannelBuffer> |
newContentDecoder(String contentEncoding)
Returns a new DecoderEmbedder that decodes the HTTP message
content encoded in the specified contentEncoding. |
Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler |
channelBound, channelClosed, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream, writeComplete |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
HttpContentDecoder
protected HttpContentDecoder()
- Creates a new instance.
messageReceived
public void messageReceived(org.jboss.netty.channel.ChannelHandlerContext ctx,
org.jboss.netty.channel.MessageEvent e)
throws Exception
- Overrides:
messageReceived
in class org.jboss.netty.channel.SimpleChannelUpstreamHandler
- Throws:
Exception
newContentDecoder
protected abstract org.jboss.netty.handler.codec.embedder.DecoderEmbedder<org.jboss.netty.buffer.ChannelBuffer> newContentDecoder(String contentEncoding)
throws Exception
- Returns a new
DecoderEmbedder
that decodes the HTTP message
content encoded in the specified contentEncoding.
- Parameters:
contentEncoding
- the value of the "Content-Encoding"
header
- Returns:
- a new
DecoderEmbedder
if the specified encoding is supported.
null
otherwise (alternatively, you can throw an exception
to block unknown encoding).
- Throws:
Exception
getTargetContentEncoding
protected String getTargetContentEncoding(String contentEncoding)
throws Exception
- Returns the expected content encoding of the decoded content.
This method returns
"identity"
by default, which is the case for
most decoders.
- Parameters:
contentEncoding
- the value of the "Content-Encoding"
header
- Returns:
- the expected content encoding of the new content
- Throws:
Exception
Copyright © 2009-2012 Frederic Bregier. All Rights Reserved.