@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.Cumulator
ChannelHandler.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, userEventTriggered
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
ensureNotSharable, handlerAdded, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
handlerAdded
private 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
ByteToMessageDecoder
ByteBuf
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 ByteToMessageDecoder
ctx
- 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.Exception
private boolean decodeInline(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exception
private boolean decodeLength(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exception
private boolean decodeBulkString(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exception
private boolean decodeBulkStringEndOfLine(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exception
private boolean decodeBulkStringContent(ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
java.lang.Exception
private static void readEndOfLine(ByteBuf in)
private RedisMessage newInlineRedisMessage(RedisMessageType messageType, ByteBuf content)
private long parseRedisNumber(ByteBuf byteBuf)
private long parsePositiveNumber(ByteBuf byteBuf)