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
@UnstableApi public final class RedisDecoder extends ByteToMessageDecoder
Decodes the Redis protocol intoRedisMessage
objects following RESP (REdis Serialization Protocol).RedisMessage
parts can be aggregated toRedisMessage
usingRedisArrayAggregator
or processed directly.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
RedisDecoder.State
private static class
RedisDecoder.ToPositiveLongProcessor
-
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
Fields Modifier and Type Field Description private boolean
decodeInlineCommands
private int
maxInlineMessageLength
private RedisMessagePool
messagePool
private int
remainingBulkLength
private RedisDecoder.State
state
private RedisDecoder.ToPositiveLongProcessor
toPositiveLongProcessor
private RedisMessageType
type
-
Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
-
-
Constructor Summary
Constructors Constructor Description RedisDecoder()
Creates 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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out)
Decode the from oneByteBuf
to an other.private boolean
decodeBulkString(ByteBuf in, java.util.List<java.lang.Object> out)
private boolean
decodeBulkStringContent(ByteBuf in, java.util.List<java.lang.Object> out)
private boolean
decodeBulkStringEndOfLine(ByteBuf in, java.util.List<java.lang.Object> out)
private boolean
decodeInline(ByteBuf in, java.util.List<java.lang.Object> out)
private boolean
decodeLength(ByteBuf in, java.util.List<java.lang.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
readLine(ByteBuf in)
private void
resetDecoder()
-
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 Detail
-
toPositiveLongProcessor
private final RedisDecoder.ToPositiveLongProcessor toPositiveLongProcessor
-
decodeInlineCommands
private final boolean decodeInlineCommands
-
maxInlineMessageLength
private final int maxInlineMessageLength
-
messagePool
private final RedisMessagePool messagePool
-
state
private RedisDecoder.State state
-
type
private RedisMessageType type
-
remainingBulkLength
private int remainingBulkLength
-
-
Constructor Detail
-
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
public RedisDecoder(int maxInlineMessageLength, RedisMessagePool messagePool)
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 Detail
-
decode
protected void decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
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:
java.lang.Exception
- is thrown if an error occurs
-
resetDecoder
private void resetDecoder()
-
decodeType
private boolean decodeType(ByteBuf in) throws java.lang.Exception
- Throws:
java.lang.Exception
-
decodeInline
private boolean decodeInline(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Throws:
java.lang.Exception
-
decodeLength
private boolean decodeLength(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Throws:
java.lang.Exception
-
decodeBulkString
private boolean decodeBulkString(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Throws:
java.lang.Exception
-
decodeBulkStringEndOfLine
private boolean decodeBulkStringEndOfLine(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Throws:
java.lang.Exception
-
decodeBulkStringContent
private boolean decodeBulkStringContent(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
- Throws:
java.lang.Exception
-
readEndOfLine
private static void readEndOfLine(ByteBuf in)
-
newInlineRedisMessage
private RedisMessage newInlineRedisMessage(RedisMessageType messageType, ByteBuf content)
-
parseRedisNumber
private long parseRedisNumber(ByteBuf byteBuf)
-
parsePositiveNumber
private long parsePositiveNumber(ByteBuf byteBuf)
-
-