Package io.netty.handler.codec.redis
Class RedisDecoder
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
io.netty.handler.codec.redis.RedisDecoder
- All Implemented Interfaces:
ChannelHandler
,ChannelInboundHandler
Decodes the Redis protocol into
RedisMessage
objects following
RESP (REdis Serialization Protocol).
RedisMessage
parts can be aggregated to RedisMessage
using
RedisArrayAggregator
or processed directly.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static enum
private static final class
Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
ByteToMessageDecoder.Cumulator
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private final int
private final RedisMessagePool
private int
private RedisDecoder.State
private final RedisDecoder.ToPositiveLongProcessor
private RedisMessageType
Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new instance with defaultmaxInlineMessageLength
andmessagePool
and inline command decoding disabled.RedisDecoder
(boolean decodeInlineCommands) Creates a new instance with defaultmaxInlineMessageLength
andmessagePool
.RedisDecoder
(int maxInlineMessageLength, RedisMessagePool messagePool) Creates a new instance with inline command decoding disabled.RedisDecoder
(int maxInlineMessageLength, RedisMessagePool messagePool, boolean decodeInlineCommands) Creates a new instance. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
decode
(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) Decode the from oneByteBuf
to an other.private boolean
decodeBulkString
(ByteBuf in, List<Object> out) private boolean
decodeBulkStringContent
(ByteBuf in, List<Object> out) private boolean
decodeBulkStringEndOfLine
(ByteBuf in, List<Object> out) private boolean
decodeInline
(ByteBuf in, List<Object> out) private boolean
decodeLength
(ByteBuf in, List<Object> out) private boolean
decodeType
(ByteBuf in) private RedisMessage
newInlineRedisMessage
(RedisMessageType messageType, ByteBuf content) private long
parsePositiveNumber
(ByteBuf byteBuf) private long
parseRedisNumber
(ByteBuf byteBuf) private static void
readEndOfLine
(ByteBuf in) private static ByteBuf
private void
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
-
Field Details
-
toPositiveLongProcessor
-
decodeInlineCommands
private final boolean decodeInlineCommands -
maxInlineMessageLength
private final int maxInlineMessageLength -
messagePool
-
state
-
type
-
remainingBulkLength
private int remainingBulkLength
-
-
Constructor Details
-
RedisDecoder
public RedisDecoder()Creates a new instance with defaultmaxInlineMessageLength
andmessagePool
and inline command decoding disabled. -
RedisDecoder
public RedisDecoder(boolean decodeInlineCommands) Creates a new instance with defaultmaxInlineMessageLength
andmessagePool
.- Parameters:
decodeInlineCommands
- iftrue
, inline commands will be decoded.
-
RedisDecoder
Creates a new instance with inline command decoding disabled.- Parameters:
maxInlineMessageLength
- the maximum length of inline message.messagePool
- the predefined message pool.
-
RedisDecoder
public RedisDecoder(int maxInlineMessageLength, RedisMessagePool messagePool, boolean decodeInlineCommands) Creates a new instance.- Parameters:
maxInlineMessageLength
- the maximum length of inline message.messagePool
- the predefined message pool.decodeInlineCommands
- iftrue
, inline commands will be decoded.
-
-
Method Details
-
decode
Description copied from class:ByteToMessageDecoder
Decode the from oneByteBuf
to an other. This method will be called till either the inputByteBuf
has nothing to read when return from this method or till nothing was read from the inputByteBuf
.- Specified by:
decode
in classByteToMessageDecoder
- Parameters:
ctx
- theChannelHandlerContext
which thisByteToMessageDecoder
belongs toin
- theByteBuf
from which to read dataout
- theList
to which decoded messages should be added- Throws:
Exception
- is thrown if an error occurs
-
resetDecoder
private void resetDecoder() -
decodeType
- Throws:
Exception
-
decodeInline
- Throws:
Exception
-
decodeLength
- Throws:
Exception
-
decodeBulkString
- Throws:
Exception
-
decodeBulkStringEndOfLine
- Throws:
Exception
-
decodeBulkStringContent
- Throws:
Exception
-
readEndOfLine
-
newInlineRedisMessage
-
readLine
-
parseRedisNumber
-
parsePositiveNumber
-