public abstract class MessageToMessageCodec<INBOUND_IN,OUTBOUND_IN> extends ChannelDuplexHandler
MessageToMessageDecoder and MessageToMessageEncoder.
Here is an example of a MessageToMessageCodec which just decode from Integer to Long
and encode from Long to Integer.
public class NumberCodec extendsBe aware that you need to callMessageToMessageCodec<Integer,Long> {@OverridepublicLongdecode(ChannelHandlerContextctx,Integermsg, List<Object> out) throwsException{ out.add(msg.longValue()); }@OverridepublicIntegerencode(ChannelHandlerContextctx,Longmsg, List<Object> out) throwsException{ out.add(msg.intValue()); } }
ReferenceCounted.retain() on messages that are just passed through if they
are of type ReferenceCounted. This is needed as the MessageToMessageCodec will call
ReferenceCounted.release() on encoded / decoded messages.ChannelHandler.Sharable | Modifier | Constructor and Description |
|---|---|
protected |
MessageToMessageCodec ()
Create a new instance which will try to detect the types to decode and encode out of the type parameter
of the class.
|
protected |
MessageToMessageCodec (Class<? extends INBOUND_IN> inboundMessageType,
Class<? extends OUTBOUND_IN> outboundMessageType)
Create a new instance.
|
bind, close, connect, deregister, disconnect, flush, read channelActive, channelInactive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered ensureNotSharable, handlerAdded, handlerRemoved, isSharable clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait exceptionCaught, handlerAdded, handlerRemoved protected MessageToMessageCodec()
protected MessageToMessageCodec(Class<? extends INBOUND_IN> inboundMessageType, Class<? extends OUTBOUND_IN> outboundMessageType)
inboundMessageType - The type of messages to decodeoutboundMessageType - The type of messages to encodepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
ChannelInboundHandlerAdapter ChannelHandlerContext.fireChannelRead(Object) to forward
to the next ChannelInboundHandler in the ChannelPipeline.
Sub-classes may override this method to change behavior.channelRead in interface ChannelInboundHandler channelRead in class ChannelInboundHandlerAdapter Exception public void channelReadComplete(ChannelHandlerContext ctx) throws Exception
ChannelInboundHandlerAdapter ChannelHandlerContext.fireChannelReadComplete() to forward
to the next ChannelInboundHandler in the ChannelPipeline.
Sub-classes may override this method to change behavior.channelReadComplete in interface ChannelInboundHandler channelReadComplete in class ChannelInboundHandlerAdapter Exception public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception
ChannelDuplexHandler ChannelOutboundInvoker.write(Object, ChannelPromise) to forward
to the next ChannelOutboundHandler in the ChannelPipeline.
Sub-classes may override this method to change behavior.write in interface ChannelOutboundHandler write in class ChannelDuplexHandler ctx - the ChannelHandlerContext for which the write operation is mademsg - the message to writepromise - the ChannelPromise to notify once the operation completesException - thrown if an error occurspublic boolean acceptInboundMessage(Object msg) throws Exception
true if and only if the specified message can be decoded by this codec.msg - the messageException public boolean acceptOutboundMessage(Object msg) throws Exception
true if and only if the specified message can be encoded by this codec.msg - the messageException protected abstract void encode(ChannelHandlerContext ctx, OUTBOUND_IN msg, List<Object> out) throws Exception
Exception MessageToMessageEncoder.encode(ChannelHandlerContext, Object, List) protected abstract void decode(ChannelHandlerContext ctx, INBOUND_IN msg, List<Object> out) throws Exception
Exception MessageToMessageDecoder.decode(ChannelHandlerContext, Object, List) Copyright © 2008–2025 The Netty Project. All rights reserved.