Package io.netty.handler.codec
Class MessageToMessageEncoder<I>
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelOutboundHandlerAdapter
-
- io.netty.handler.codec.MessageToMessageEncoder<I>
-
- All Implemented Interfaces:
ChannelHandler
,ChannelOutboundHandler
- Direct Known Subclasses:
AbstractMemcacheObjectEncoder
,Base64Encoder
,ByteArrayEncoder
,DatagramDnsQueryEncoder
,DatagramDnsResponseEncoder
,DatagramPacketEncoder
,HttpObjectEncoder
,LengthFieldPrepender
,LineEncoder
,MqttEncoder
,ProtobufEncoder
,ProtobufEncoderNano
,RedisEncoder
,SctpOutboundByteStreamHandler
,SmtpRequestEncoder
,SpdyHttpEncoder
,StompSubframeEncoder
,StringEncoder
,TcpDnsResponseEncoder
,WebSocket00FrameEncoder
,WebSocket08FrameEncoder
,WebSocketExtensionEncoder
public abstract class MessageToMessageEncoder<I> extends ChannelOutboundHandlerAdapter
ChannelOutboundHandlerAdapter
which encodes from one message to an other message For example here is an implementation which decodes anInteger
to anString
.public class IntegerToStringEncoder extends
Be aware that you need to callMessageToMessageEncoder
<Integer
> {@Override
public void encode(ChannelHandlerContext
ctx,Integer
message, List<Object> out) throwsException
{ out.add(message.toString()); } }ReferenceCounted.retain()
on messages that are just passed through if they are of typeReferenceCounted
. This is needed as theMessageToMessageEncoder
will callReferenceCounted.release()
on encoded messages.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MessageToMessageEncoder()
Create a new instance which will try to detect the types to match out of the type parameter of the class.protected
MessageToMessageEncoder(java.lang.Class<? extends I> outboundMessageType)
Create a new instance
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
acceptOutboundMessage(java.lang.Object msg)
Returnstrue
if the given message should be handled.protected abstract void
encode(ChannelHandlerContext ctx, I msg, java.util.List<java.lang.Object> out)
Encode from one message to an other.void
write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise)
CallsChannelOutboundInvoker.write(Object, ChannelPromise)
to forward to the nextChannelOutboundHandler
in theChannelPipeline
.-
Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter
bind, close, connect, deregister, disconnect, flush, read
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, 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
exceptionCaught, handlerAdded, handlerRemoved
-
-
-
-
Constructor Detail
-
MessageToMessageEncoder
protected MessageToMessageEncoder()
Create a new instance which will try to detect the types to match out of the type parameter of the class.
-
MessageToMessageEncoder
protected MessageToMessageEncoder(java.lang.Class<? extends I> outboundMessageType)
Create a new instance- Parameters:
outboundMessageType
- The type of messages to match and so encode
-
-
Method Detail
-
acceptOutboundMessage
public boolean acceptOutboundMessage(java.lang.Object msg) throws java.lang.Exception
Returnstrue
if the given message should be handled. Iffalse
it will be passed to the nextChannelOutboundHandler
in theChannelPipeline
.- Throws:
java.lang.Exception
-
write
public void write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise) throws java.lang.Exception
Description copied from class:ChannelOutboundHandlerAdapter
CallsChannelOutboundInvoker.write(Object, ChannelPromise)
to forward to the nextChannelOutboundHandler
in theChannelPipeline
. Sub-classes may override this method to change behavior.- Specified by:
write
in interfaceChannelOutboundHandler
- Overrides:
write
in classChannelOutboundHandlerAdapter
- Parameters:
ctx
- theChannelHandlerContext
for which the write operation is mademsg
- the message to writepromise
- theChannelPromise
to notify once the operation completes- Throws:
java.lang.Exception
- thrown if an error occurs
-
encode
protected abstract void encode(ChannelHandlerContext ctx, I msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
Encode from one message to an other. This method will be called for each written message that can be handled by this encoder.- Parameters:
ctx
- theChannelHandlerContext
which thisMessageToMessageEncoder
belongs tomsg
- the message to encode to an other oneout
- theList
into which the encoded msg should be added needs to do some kind of aggregation- Throws:
java.lang.Exception
- is thrown if an error occurs
-
-