RapperCL commented on code in PR #7367:
URL: https://github.com/apache/rocketmq/pull/7367#discussion_r1328069412
##########
remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RocketMQSerializable.java:
##########
@@ -202,29 +202,33 @@ private static int calTotalLen(int remark, int ext) {
return length;
}
- public static RemotingCommand rocketMQProtocolDecode(final ByteBuf
headerBuffer,
+ public static RemotingCommand rocketMQProtocolDecode(final ByteBuf
byteBuffer,
int headerLen) throws RemotingCommandException {
RemotingCommand cmd = new RemotingCommand();
+ int beginIndex = byteBuffer.readerIndex();
// int code(~32767)
- cmd.setCode(headerBuffer.readShort());
+ cmd.setCode(byteBuffer.readShort());
// LanguageCode language
- cmd.setLanguage(LanguageCode.valueOf(headerBuffer.readByte()));
+ cmd.setLanguage(LanguageCode.valueOf(byteBuffer.readByte()));
// int version(~32767)
- cmd.setVersion(headerBuffer.readShort());
+ cmd.setVersion(byteBuffer.readShort());
// int opaque
- cmd.setOpaque(headerBuffer.readInt());
+ cmd.setOpaque(byteBuffer.readInt());
// int flag
- cmd.setFlag(headerBuffer.readInt());
+ cmd.setFlag(byteBuffer.readInt());
+ // remain length
+ int remainLength = headerLen - byteBuffer.readerIndex() + beginIndex;
Review Comment:
我到不这么认为,因为我认为一方面这里就应该声明一个变量来表示这里的长度,这样会更加易于理解与维护,另一方面可以提高校验的准确性。
##########
remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RocketMQSerializable.java:
##########
@@ -202,29 +202,33 @@ private static int calTotalLen(int remark, int ext) {
return length;
}
- public static RemotingCommand rocketMQProtocolDecode(final ByteBuf
headerBuffer,
+ public static RemotingCommand rocketMQProtocolDecode(final ByteBuf
byteBuffer,
int headerLen) throws RemotingCommandException {
RemotingCommand cmd = new RemotingCommand();
+ int beginIndex = byteBuffer.readerIndex();
// int code(~32767)
- cmd.setCode(headerBuffer.readShort());
+ cmd.setCode(byteBuffer.readShort());
// LanguageCode language
- cmd.setLanguage(LanguageCode.valueOf(headerBuffer.readByte()));
+ cmd.setLanguage(LanguageCode.valueOf(byteBuffer.readByte()));
// int version(~32767)
- cmd.setVersion(headerBuffer.readShort());
+ cmd.setVersion(byteBuffer.readShort());
// int opaque
- cmd.setOpaque(headerBuffer.readInt());
+ cmd.setOpaque(byteBuffer.readInt());
// int flag
- cmd.setFlag(headerBuffer.readInt());
+ cmd.setFlag(byteBuffer.readInt());
+ // remain length
+ int remainLength = headerLen - byteBuffer.readerIndex() + beginIndex;
Review Comment:
我到不这么认为,因为我认为一方面这里就应该声明一个变量来表示这里的长度,这样会更加易于理解与维护,另一方面可以提高校验的准确性。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]