Package org.mockserver.netty.proxy
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
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.CumulatorNested 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_KNOWNFields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR -
Constructor Summary
ConstructorsConstructorDescriptionRedisMessageFramer(int maxMessageBytes, org.mockserver.logging.MockServerLogger mockServerLogger) -
Method Summary
Modifier and TypeMethodDescriptionprotected longmessageBytes(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_KNOWNwhile the bytes held cannot say, or anything afterBinaryMessageFramer.refuse(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.lang.String).protected voidmessageTaken(io.netty.buffer.ByteBuf message) Called with each whole message before it is passed on.Methods inherited from class org.mockserver.netty.proxy.BinaryMessageFramer
atMessageBoundary, bytesBeforeTlsMayStart, decode, forConfiguration, maxMessageBytes, protocolAllowsTlsHere, refuse, tlsMayStartHereMethods inherited from class io.netty.handler.codec.ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded
-
Constructor Details
-
RedisMessageFramer
public RedisMessageFramer(int maxMessageBytes, org.mockserver.logging.MockServerLogger mockServerLogger)
-
-
Method Details
-
messageBytes
protected long messageBytes(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in) Description copied from class:BinaryMessageFramerHow many bytes the message that starts at the reader index has,BinaryMessageFramer.NOT_YET_KNOWNwhile the bytes held cannot say, or anything afterBinaryMessageFramer.refuse(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.lang.String). Must not move the reader index.- Specified by:
messageBytesin classBinaryMessageFramer
-
messageTaken
protected void messageTaken(io.netty.buffer.ByteBuf message) Description copied from class:BinaryMessageFramerCalled with each whole message before it is passed on.- Overrides:
messageTakenin classBinaryMessageFramer
-