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 enumprivate static final classNested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
ByteToMessageDecoder.CumulatorNested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate final intprivate final RedisMessagePoolprivate intprivate RedisDecoder.Stateprivate final RedisDecoder.ToPositiveLongProcessorprivate RedisMessageTypeFields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR -
Constructor Summary
ConstructorsConstructorDescriptionCreates 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
Modifier and TypeMethodDescriptionprotected voiddecode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) Decode the from oneByteBufto an other.private booleandecodeBulkString(ByteBuf in, List<Object> out) private booleandecodeBulkStringContent(ByteBuf in, List<Object> out) private booleandecodeBulkStringEndOfLine(ByteBuf in, List<Object> out) private booleandecodeInline(ByteBuf in, List<Object> out) private booleandecodeLength(ByteBuf in, List<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 ByteBufprivate voidMethods 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
-
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 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
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: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:
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
-