Simplified buffer allocation for SubAck encoding part

This commit is contained in:
andrea
2014-02-23 12:58:11 +01:00
parent 16ccfeda1d
commit b0d9bc2d6a
@@ -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();
}
}