Simplified buffer allocation for SubAck encoding part
This commit is contained in:
@@ -17,24 +17,18 @@ class SubAckEncoder extends DemuxEncoder<SubAckMessage> {
|
||||
throw new IllegalArgumentException("Found a suback message with empty topics");
|
||||
}
|
||||
|
||||
ByteBuf variableHeaderBuff = chc.alloc().buffer(4);
|
||||
ByteBuf buff = null;
|
||||
int variableHeaderSize = 2 + message.types().size();
|
||||
ByteBuf buff = chc.alloc().buffer(6 + variableHeaderSize);
|
||||
try {
|
||||
variableHeaderBuff.writeShort(message.getMessageID());
|
||||
for (AbstractMessage.QOSType c : message.types()) {
|
||||
variableHeaderBuff.writeByte(c.ordinal());
|
||||
}
|
||||
|
||||
int variableHeaderSize = variableHeaderBuff.readableBytes();
|
||||
buff = chc.alloc().buffer(2 + variableHeaderSize);
|
||||
|
||||
buff.writeByte(AbstractMessage.SUBACK << 4 );
|
||||
buff.writeBytes(Utils.encodeRemainingLength(variableHeaderSize));
|
||||
buff.writeBytes(variableHeaderBuff);
|
||||
buff.writeShort(message.getMessageID());
|
||||
for (AbstractMessage.QOSType c : message.types()) {
|
||||
buff.writeByte(c.ordinal());
|
||||
}
|
||||
|
||||
out.writeBytes(buff);
|
||||
} finally {
|
||||
variableHeaderBuff.release();
|
||||
buff.release();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user