Class EspressoMessageToMessageDecoder<I>

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler
    Direct Known Subclasses:
    EspressoMessageAggregator

    public abstract class EspressoMessageToMessageDecoder<I>
    extends io.netty.channel.ChannelInboundHandlerAdapter
    Forked from Netty 4.1.42.Final. Main change is to avoid creating TypeParameterMatcher. ChannelInboundHandlerAdapter which decodes from one message to an other message. For example here is an implementation which decodes a String to an Integer which represent the length of the String.
         public class StringToIntegerDecoder extends
                 MessageToMessageDecoder<String> {
    
             @Override
             public void decode(ChannelHandlerContext ctx, String message,
                                List<Object> out) throws Exception {
                 out.add(message.length());
             }
         }
     
    Be aware that you need to call ReferenceCounted.retain() on messages that are just passed through if they are of type ReferenceCounted. This is needed as the MessageToMessageDecoder will call ReferenceCounted.release() on decoded messages.
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

        io.netty.channel.ChannelHandler.Sharable
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected EspressoMessageToMessageDecoder()
      Create a new instance which will try to detect the types to match out of the type parameter of the class.
      protected EspressoMessageToMessageDecoder​(java.lang.Class<? extends I> inboundMessageType)
      Create a new instance
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      boolean acceptInboundMessage​(java.lang.Object msg)
      Returns true if the given message should be handled.
      void channelRead​(io.netty.channel.ChannelHandlerContext ctx, java.lang.Object msg)  
      protected abstract void decode​(io.netty.channel.ChannelHandlerContext ctx, I msg, java.util.List<java.lang.Object> out)
      Decode from one message to an other.
      • Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

        channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
      • Methods inherited from class io.netty.channel.ChannelHandlerAdapter

        ensureNotSharable, 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

        handlerAdded, handlerRemoved
    • Constructor Detail

      • EspressoMessageToMessageDecoder

        protected EspressoMessageToMessageDecoder()
        Create a new instance which will try to detect the types to match out of the type parameter of the class.
      • EspressoMessageToMessageDecoder

        protected EspressoMessageToMessageDecoder​(java.lang.Class<? extends I> inboundMessageType)
        Create a new instance
        Parameters:
        inboundMessageType - The type of messages to match and so decode
    • Method Detail

      • acceptInboundMessage

        public boolean acceptInboundMessage​(java.lang.Object msg)
                                     throws java.lang.Exception
        Returns true if the given message should be handled. If false it will be passed to the next ChannelInboundHandler in the ChannelPipeline.
        Throws:
        java.lang.Exception
      • channelRead

        public void channelRead​(io.netty.channel.ChannelHandlerContext ctx,
                                java.lang.Object msg)
                         throws java.lang.Exception
        Specified by:
        channelRead in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelRead in class io.netty.channel.ChannelInboundHandlerAdapter
        Throws:
        java.lang.Exception
      • decode

        protected abstract void decode​(io.netty.channel.ChannelHandlerContext ctx,
                                       I msg,
                                       java.util.List<java.lang.Object> out)
                                throws java.lang.Exception
        Decode from one message to an other. This method will be called for each written message that can be handled by this decoder.
        Parameters:
        ctx - the ChannelHandlerContext which this MessageToMessageDecoder belongs to
        msg - the message to decode to an other one
        out - the List to which decoded messages should be added
        Throws:
        java.lang.Exception - is thrown if an error occurs