@UnstableApi public final class RedisDecoder extends ByteToMessageDecoder
RedisMessage objects following
RESP (REdis Serialization Protocol).
RedisMessage parts can be aggregated to RedisMessage using
RedisArrayAggregator or processed directly.| Modifier and Type | Class and Description |
|---|---|
private static class |
RedisDecoder.State |
private static class |
RedisDecoder.ToPositiveLongProcessor |
ByteToMessageDecoder.CumulatorChannelHandler.Sharable| Modifier and Type | Field and Description |
|---|---|
private int |
maxInlineMessageLength |
private RedisMessagePool |
messagePool |
private int |
remainingBulkLength |
private RedisDecoder.State |
state |
private RedisDecoder.ToPositiveLongProcessor |
toPositiveLongProcessor |
private RedisMessageType |
type |
COMPOSITE_CUMULATOR, MERGE_CUMULATOR| Constructor and Description |
|---|
RedisDecoder()
Creates a new instance with default
maxInlineMessageLength and messagePool. |
RedisDecoder(int maxInlineMessageLength,
RedisMessagePool messagePool)
Creates a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
decode(ChannelHandlerContext ctx,
ByteBuf in,
java.util.List<java.lang.Object> out)
Decode the from one
ByteBuf 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() |
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtensureNotSharable, handlerAdded, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waithandlerAddedprivate final RedisDecoder.ToPositiveLongProcessor toPositiveLongProcessor
private final int maxInlineMessageLength
private final RedisMessagePool messagePool
private RedisDecoder.State state
private RedisMessageType type
private int remainingBulkLength
public RedisDecoder()
maxInlineMessageLength and messagePool.public RedisDecoder(int maxInlineMessageLength,
RedisMessagePool messagePool)
maxInlineMessageLength - the maximum length of inline message.messagePool - the predefined message pool.protected void decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
ByteToMessageDecoderByteBuf to an other. This method will be called till either the input
ByteBuf has nothing to read when return from this method or till nothing was read from the input
ByteBuf.decode in class ByteToMessageDecoderctx - the ChannelHandlerContext which this ByteToMessageDecoder belongs toin - the ByteBuf from which to read dataout - the List to which decoded messages should be addedjava.lang.Exception - is thrown if an error occursprivate void resetDecoder()
private boolean decodeType(ByteBuf in) throws java.lang.Exception
java.lang.Exceptionprivate boolean decodeInline(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exceptionprivate boolean decodeLength(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exceptionprivate boolean decodeBulkString(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exceptionprivate boolean decodeBulkStringEndOfLine(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exceptionprivate boolean decodeBulkStringContent(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exceptionprivate static void readEndOfLine(ByteBuf in)
private RedisMessage newInlineRedisMessage(RedisMessageType messageType, ByteBuf content)
private long parseRedisNumber(ByteBuf byteBuf)
private long parsePositiveNumber(ByteBuf byteBuf)