Class JsonRpcDecoder

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler

    public class JsonRpcDecoder
    extends io.netty.handler.codec.ByteToMessageDecoder
    JSON RPC 1.0 compatible decoder capable of decoding JSON messages from a TCP stream. The stream is framed first by inspecting the json for valid end marker (left curly) and is passed to a Json parser (jackson) for converting into an object model.

    There are no JSON parsers that I am aware of that does non blocking parsing. This approach avoids having to run json parser over and over again on the entire stream waiting for input. Parser is invoked only when we know of a full JSON message in the stream.

    • Nested Class Summary

      • Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder

        io.netty.handler.codec.ByteToMessageDecoder.Cumulator
      • Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

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

      • Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder

        COMPOSITE_CUMULATOR, MERGE_CUMULATOR
    • Constructor Summary

      Constructors 
      Constructor Description
      JsonRpcDecoder​(int maxFrameLength)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void decode​(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf buf, List<Object> out)  
      int getRecordsRead()  
      • Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder

        actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
      • Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

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

        ensureNotSharable, handlerAdded, isSharable
      • Methods inherited from interface io.netty.channel.ChannelHandler

        handlerAdded
    • Constructor Detail

      • JsonRpcDecoder

        public JsonRpcDecoder​(int maxFrameLength)
    • Method Detail

      • decode

        protected void decode​(io.netty.channel.ChannelHandlerContext ctx,
                              io.netty.buffer.ByteBuf buf,
                              List<Object> out)
                       throws IOException
        Specified by:
        decode in class io.netty.handler.codec.ByteToMessageDecoder
        Throws:
        IOException
      • getRecordsRead

        public int getRecordsRead()