Package io.netty.handler.codec.http
Class HttpContentEncoder
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.ChannelDuplexHandler
io.netty.handler.codec.MessageToMessageCodec<HttpRequest,HttpObject>
io.netty.handler.codec.http.HttpContentEncoder
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler,io.netty.channel.ChannelOutboundHandler
- Direct Known Subclasses:
HttpContentCompressor
public abstract class HttpContentEncoder
extends io.netty.handler.codec.MessageToMessageCodec<HttpRequest,HttpObject>
Encodes the content of the outbound
HttpResponse and HttpContent.
The original content is replaced with the new content encoded by the
EmbeddedChannel, which is created by beginEncode(HttpResponse, String).
Once encoding is finished, the value of the 'Content-Encoding' header
is set to the target content encoding, as returned by
beginEncode(HttpResponse, String).
Also, the 'Content-Length' header is updated to the length of the
encoded content. If there is no supported or allowed encoding in the
corresponding HttpRequest's "Accept-Encoding" header,
beginEncode(HttpResponse, String) should return null so that
no encoding occurs (i.e. pass-through).
Please note that this is an abstract class. You have to extend this class
and implement beginEncode(HttpResponse, String) properly to make
this class functional. For example, refer to the source code of
HttpContentCompressor.
This handler must be placed after HttpObjectEncoder in the pipeline
so that this handler can intercept HTTP responses before HttpObjectEncoder
converts them into ByteBufs.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanprotected abstract HttpContentEncoder.ResultbeginEncode(HttpResponse httpResponse, String acceptEncoding) Prepare to encode the HTTP message content.voidchannelInactive(io.netty.channel.ChannelHandlerContext ctx) protected voiddecode(io.netty.channel.ChannelHandlerContext ctx, HttpRequest msg, List<Object> out) protected voidencode(io.netty.channel.ChannelHandlerContext ctx, HttpObject msg, List<Object> out) voidhandlerRemoved(io.netty.channel.ChannelHandlerContext ctx) Methods inherited from class io.netty.handler.codec.MessageToMessageCodec
acceptInboundMessage, channelRead, writeMethods inherited from class io.netty.channel.ChannelDuplexHandler
bind, close, connect, deregister, disconnect, flush, readMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded
-
Constructor Details
-
HttpContentEncoder
public HttpContentEncoder()
-
-
Method Details
-
acceptOutboundMessage
- Overrides:
acceptOutboundMessagein classio.netty.handler.codec.MessageToMessageCodec<HttpRequest,HttpObject> - Throws:
Exception
-
decode
protected void decode(io.netty.channel.ChannelHandlerContext ctx, HttpRequest msg, List<Object> out) throws Exception - Specified by:
decodein classio.netty.handler.codec.MessageToMessageCodec<HttpRequest,HttpObject> - Throws:
Exception
-
encode
protected void encode(io.netty.channel.ChannelHandlerContext ctx, HttpObject msg, List<Object> out) throws Exception - Specified by:
encodein classio.netty.handler.codec.MessageToMessageCodec<HttpRequest,HttpObject> - Throws:
Exception
-
beginEncode
protected abstract HttpContentEncoder.Result beginEncode(HttpResponse httpResponse, String acceptEncoding) throws Exception Prepare to encode the HTTP message content.- Parameters:
httpResponse- the http responseacceptEncoding- the value of the"Accept-Encoding"header- Returns:
- the result of preparation, which is composed of the determined
target content encoding and a new
EmbeddedChannelthat encodes the content into the target content encoding.nullifacceptEncodingis unsupported or rejected and thus the content should be handled as-is (i.e. no encoding). - Throws:
Exception
-
handlerRemoved
- Specified by:
handlerRemovedin interfaceio.netty.channel.ChannelHandler- Overrides:
handlerRemovedin classio.netty.channel.ChannelHandlerAdapter- Throws:
Exception
-
channelInactive
- Specified by:
channelInactivein interfaceio.netty.channel.ChannelInboundHandler- Overrides:
channelInactivein classio.netty.channel.ChannelInboundHandlerAdapter- Throws:
Exception
-