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
ChannelOutboundHandlerAdapter which encodes from one message to an other message
For example here is an implementation which decodes an Integer to an String.
public class IntegerToStringEncoder extendsBe aware that you need to callMessageToMessageEncoder<Integer> {@Overridepublic void encode(ChannelHandlerContextctx,Integermessage, List<Object> out) throwsException{ out.add(message.toString()); } }
ReferenceCounted.retain() on messages that are just passed through if they
are of type ReferenceCounted. This is needed as the MessageToMessageEncoder will call
ReferenceCounted.release() on encoded messages.-
Nested Class Summary
Nested classes/interfaces inherited from interface ChannelHandler
ChannelHandler.Sharable -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreate a new instance which will try to detect the types to match out of the type parameter of the class.protectedMessageToMessageEncoder(Class<? extends I> outboundMessageType) Create a new instance -
Method Summary
Modifier and TypeMethodDescriptionbooleanacceptOutboundMessage(Object msg) Returnstrueif the given message should be handled.protected abstract voidencode(ChannelHandlerContext ctx, I msg, List<Object> out) Encode from one message to an other.voidwrite(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) CallsChannelOutboundInvoker.write(Object, ChannelPromise)to forward to the nextChannelOutboundHandlerin theChannelPipeline.Methods inherited from class ChannelOutboundHandlerAdapter
bind, close, connect, deregister, disconnect, flush, readMethods inherited from class ChannelHandlerAdapter
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharableMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ChannelHandler
exceptionCaught, handlerAdded, handlerRemoved
-
Constructor Details
-
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
-
-
Method Details
-
acceptOutboundMessage
Returnstrueif the given message should be handled. Iffalseit will be passed to the nextChannelOutboundHandlerin theChannelPipeline.- Throws:
Exception
-
write
Description copied from class:ChannelOutboundHandlerAdapterCallsChannelOutboundInvoker.write(Object, ChannelPromise)to forward to the nextChannelOutboundHandlerin theChannelPipeline. Sub-classes may override this method to change behavior.- Specified by:
writein interfaceChannelOutboundHandler- Overrides:
writein classChannelOutboundHandlerAdapter- Parameters:
ctx- theChannelHandlerContextfor which the write operation is mademsg- the message to writepromise- theChannelPromiseto notify once the operation completes- Throws:
Exception- thrown if an error occurs
-
encode
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- theChannelHandlerContextwhich thisMessageToMessageEncoderbelongs tomsg- the message to encode to an other oneout- theListinto which the encoded msg should be added needs to do some kind of aggregation- Throws:
Exception- is thrown if an error occurs
-