Class JsonRpcDecoder

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
org.opendaylight.ovsdb.lib.jsonrpc.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 Link icon

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

    io.netty.handler.codec.ByteToMessageDecoder.Cumulator

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

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

    Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder Link icon

    COMPOSITE_CUMULATOR, MERGE_CUMULATOR
  • Constructor Summary Link icon

    Constructors
    Constructor
    Description
    JsonRpcDecoder(int maxFrameLength)
     
  • Method Summary Link icon

    Modifier and Type
    Method
    Description
    protected void
    decode(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf buf, List<Object> out)
     
    int
     

    Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder Link icon

    actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered

    Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter Link icon

    channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught

    Methods inherited from class io.netty.channel.ChannelHandlerAdapter Link icon

    ensureNotSharable, handlerAdded, isSharable

    Methods inherited from class java.lang.Object Link icon

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.netty.channel.ChannelHandler Link icon

    handlerAdded
  • Constructor Details Link icon

    • JsonRpcDecoder Link icon

      public JsonRpcDecoder(int maxFrameLength)
  • Method Details Link icon

    • decode Link icon

      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 Link icon

      public int getRecordsRead()