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 intoRedisMessageobjects following RESP (REdis Serialization Protocol).RedisMessageparts can be aggregated toRedisMessageusingRedisArrayAggregatoror processed directly.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classRedisDecoder.Stateprivate static classRedisDecoder.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 booleandecodeInlineCommandsprivate intmaxInlineMessageLengthprivate RedisMessagePoolmessagePoolprivate intremainingBulkLengthprivate RedisDecoder.Statestateprivate RedisDecoder.ToPositiveLongProcessortoPositiveLongProcessorprivate RedisMessageTypetype-
Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
-
-
Constructor Summary
Constructors Constructor Description RedisDecoder()Creates a new instance with defaultmaxInlineMessageLengthandmessagePooland inline command decoding disabled.RedisDecoder(boolean decodeInlineCommands)Creates a new instance with defaultmaxInlineMessageLengthandmessagePool.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 voiddecode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out)Decode the from oneByteBufto an other.private booleandecodeBulkString(ByteBuf in, java.util.List<java.lang.Object> out)private booleandecodeBulkStringContent(ByteBuf in, java.util.List<java.lang.Object> out)private booleandecodeBulkStringEndOfLine(ByteBuf in, java.util.List<java.lang.Object> out)private booleandecodeInline(ByteBuf in, java.util.List<java.lang.Object> out)private booleandecodeLength(ByteBuf in, java.util.List<java.lang.Object> out)private booleandecodeType(ByteBuf in)private RedisMessagenewInlineRedisMessage(RedisMessageType messageType, ByteBuf content)private longparsePositiveNumber(ByteBuf byteBuf)private longparseRedisNumber(ByteBuf byteBuf)private static voidreadEndOfLine(ByteBuf in)private static ByteBufreadLine(ByteBuf in)private voidresetDecoder()-
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 defaultmaxInlineMessageLengthandmessagePooland inline command decoding disabled.
-
RedisDecoder
public RedisDecoder(boolean decodeInlineCommands)
Creates a new instance with defaultmaxInlineMessageLengthandmessagePool.- 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:ByteToMessageDecoderDecode the from oneByteBufto an other. This method will be called till either the inputByteBufhas nothing to read when return from this method or till nothing was read from the inputByteBuf.- Specified by:
decodein classByteToMessageDecoder- Parameters:
ctx- theChannelHandlerContextwhich thisByteToMessageDecoderbelongs toin- theByteBuffrom which to read dataout- theListto 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)
-
-