Class FrameDecoder

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

    public abstract class FrameDecoder
    extends io.netty.channel.ChannelInboundHandlerAdapter
    A Netty inbound handler that decodes incoming frames and passes them forward to InboundMessageHandler for processing. Handles work stashing, and together with InboundMessageHandler - flow control. Unlike most Netty inbound handlers, doesn't use the pipeline to talk to its upstream handler. Instead, a FrameDecoder.FrameProcessor must be registered with the frame decoder, to be invoked on new frames. See deliver(FrameProcessor). See activate(FrameProcessor), reactivate(), and FrameDecoder.FrameProcessor for flow control implementation. Five frame decoders currently exist, one used for each connection depending on flags and messaging version: 1. FrameDecoderCrc: no compression; payload is protected by CRC32 2. FrameDecoderLZ4: LZ4 compression with custom frame format; payload is protected by CRC32 3. FrameDecoderUnprotected: no compression; no integrity protection 4. FrameDecoderLegacy: no compression; no integrity protection; turns unframed streams of legacy messages (< 4.0) into frames 5. FrameDecoderLegacyLZ4 LZ4 compression using standard LZ4 frame format; groups legacy messages (< 4.0) into frames
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  FrameDecoder.CorruptFrame
      A corrupted frame was encountered; this represents the knowledge we have about this frame, and whether or not the stream is recoverable.
      static class  FrameDecoder.Frame  
      static interface  FrameDecoder.FrameProcessor  
      static class  FrameDecoder.IntactFrame
      The payload bytes of a complete frame, i.e.
      • Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void activate​(FrameDecoder.FrameProcessor processor)
      For use by InboundMessageHandler (or other upstream handlers) that want to start receiving frames.
      void channelInactive​(io.netty.channel.ChannelHandlerContext ctx)  
      void channelRead​(io.netty.channel.ChannelHandlerContext ctx, java.lang.Object msg)
      Called by Netty pipeline when a new message arrives; we anticipate in normal operation this will receive messages of type BufferPoolAllocator.Wrapped or BufferPoolAllocator.Wrapped.
      void channelReadComplete​(io.netty.channel.ChannelHandlerContext ctx)  
      void discard()
      For use by InboundMessageHandler (or other upstream handlers) that want to permanently stop receiving frames, e.g.
      void handlerAdded​(io.netty.channel.ChannelHandlerContext ctx)  
      • Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

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

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

        handlerRemoved
    • Method Detail

      • activate

        public void activate​(FrameDecoder.FrameProcessor processor)
        For use by InboundMessageHandler (or other upstream handlers) that want to start receiving frames.
      • discard

        public void discard()
        For use by InboundMessageHandler (or other upstream handlers) that want to permanently stop receiving frames, e.g. because of an exception caught.
      • channelReadComplete

        public void channelReadComplete​(io.netty.channel.ChannelHandlerContext ctx)
        Specified by:
        channelReadComplete in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelReadComplete in class io.netty.channel.ChannelInboundHandlerAdapter
      • handlerAdded

        public void handlerAdded​(io.netty.channel.ChannelHandlerContext ctx)
        Specified by:
        handlerAdded in interface io.netty.channel.ChannelHandler
        Overrides:
        handlerAdded in class io.netty.channel.ChannelHandlerAdapter
      • channelInactive

        public void channelInactive​(io.netty.channel.ChannelHandlerContext ctx)
        Specified by:
        channelInactive in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelInactive in class io.netty.channel.ChannelInboundHandlerAdapter