Class RedisMessageFramer

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
org.mockserver.netty.proxy.BinaryMessageFramer
org.mockserver.netty.proxy.RedisMessageFramer
All Implemented Interfaces:
io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler

public class RedisMessageFramer extends BinaryMessageFramer
Cuts a binary connection into the messages of the Redis serialization protocol (RESP2 and RESP3), as a client sends them: one complete top-level value with everything nested in it, or, when the first byte names no RESP type, one inline command up to and including its line feed. Bulk strings, bulk errors and verbatim strings are skipped by their declared length; arrays, sets, pushes, maps and attributes count their values; streamed strings and aggregates (?) run to their end marker.

The value is parsed as it arrives, so what has been parsed is not parsed again when more is read. Nesting deeper than MAX_DEPTH, a length or count that is not a number, a value with no type byte inside another, or a line or bulk string not ended by CRLF closes the connection.

  • 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 org.mockserver.netty.proxy.BinaryMessageFramer

    NOT_YET_KNOWN

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

    COMPOSITE_CUMULATOR, MERGE_CUMULATOR
  • Constructor Summary

    Constructors
    Constructor
    Description
    RedisMessageFramer(int maxMessageBytes, org.mockserver.logging.MockServerLogger mockServerLogger)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected long
    messageBytes(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in)
    How many bytes the message that starts at the reader index has, BinaryMessageFramer.NOT_YET_KNOWN while the bytes held cannot say, or anything after BinaryMessageFramer.refuse(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.lang.String).
    protected void
    messageTaken(io.netty.buffer.ByteBuf message)
    Called with each whole message before it is passed on.

    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 class java.lang.Object

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

    Methods inherited from interface io.netty.channel.ChannelHandler

    handlerAdded