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:
ChannelHandler,ChannelInboundHandler,ChannelOutboundHandler
- Direct Known Subclasses:
HttpContentCompressor
public abstract class HttpContentEncoder extends MessageToMessageCodec<HttpRequest,HttpObject>
Encodes the content of the outboundHttpResponseandHttpContent. The original content is replaced with the new content encoded by theEmbeddedChannel, which is created bybeginEncode(HttpResponse, String). Once encoding is finished, the value of the 'Content-Encoding' header is set to the target content encoding, as returned bybeginEncode(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 correspondingHttpRequest's"Accept-Encoding"header,beginEncode(HttpResponse, String)should returnnullso 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 ofHttpContentCompressor.This handler must be placed after
HttpObjectEncoderin the pipeline so that this handler can intercept HTTP responses beforeHttpObjectEncoderconverts them intoByteBufs.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHttpContentEncoder.Result-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Constructor Summary
Constructors Constructor Description HttpContentEncoder()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanacceptOutboundMessage(java.lang.Object msg)Returnstrueif and only if the specified message can be encoded by this codec.protected abstract HttpContentEncoder.ResultbeginEncode(HttpResponse httpResponse, java.lang.String acceptEncoding)Prepare to encode the HTTP message content.voidchannelInactive(ChannelHandlerContext ctx)CallsChannelHandlerContext.fireChannelInactive()to forward to the nextChannelInboundHandlerin theChannelPipeline.protected voiddecode(ChannelHandlerContext ctx, HttpRequest msg, java.util.List<java.lang.Object> out)protected voidencode(ChannelHandlerContext ctx, HttpObject msg, java.util.List<java.lang.Object> out)voidhandlerRemoved(ChannelHandlerContext ctx)Do nothing by default, sub-classes may override this method.-
Methods inherited from class io.netty.handler.codec.MessageToMessageCodec
acceptInboundMessage, channelRead, channelReadComplete, write
-
Methods inherited from class io.netty.channel.ChannelDuplexHandler
bind, close, connect, deregister, disconnect, flush, read
-
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharable
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.channel.ChannelHandler
handlerAdded
-
-
-
-
Method Detail
-
acceptOutboundMessage
public boolean acceptOutboundMessage(java.lang.Object msg) throws java.lang.ExceptionDescription copied from class:MessageToMessageCodecReturnstrueif and only if the specified message can be encoded by this codec.- Overrides:
acceptOutboundMessagein classMessageToMessageCodec<HttpRequest,HttpObject>- Parameters:
msg- the message- Throws:
java.lang.Exception
-
decode
protected void decode(ChannelHandlerContext ctx, HttpRequest msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Specified by:
decodein classMessageToMessageCodec<HttpRequest,HttpObject>- Throws:
java.lang.Exception- See Also:
MessageToMessageDecoder.decode(ChannelHandlerContext, Object, List)
-
encode
protected void encode(ChannelHandlerContext ctx, HttpObject msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Specified by:
encodein classMessageToMessageCodec<HttpRequest,HttpObject>- Throws:
java.lang.Exception- See Also:
MessageToMessageEncoder.encode(ChannelHandlerContext, Object, List)
-
beginEncode
protected abstract HttpContentEncoder.Result beginEncode(HttpResponse httpResponse, java.lang.String acceptEncoding) throws java.lang.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:
java.lang.Exception
-
handlerRemoved
public void handlerRemoved(ChannelHandlerContext ctx) throws java.lang.Exception
Description copied from class:ChannelHandlerAdapterDo nothing by default, sub-classes may override this method.- Specified by:
handlerRemovedin interfaceChannelHandler- Overrides:
handlerRemovedin classChannelHandlerAdapter- Throws:
java.lang.Exception
-
channelInactive
public void channelInactive(ChannelHandlerContext ctx) throws java.lang.Exception
Description copied from class:ChannelInboundHandlerAdapterCallsChannelHandlerContext.fireChannelInactive()to forward to the nextChannelInboundHandlerin theChannelPipeline. Sub-classes may override this method to change behavior.- Specified by:
channelInactivein interfaceChannelInboundHandler- Overrides:
channelInactivein classChannelInboundHandlerAdapter- Throws:
java.lang.Exception
-
-