public MQTTFrame encode() {
try {
DataByteArrayOutputStream os = new DataByteArrayOutputStream();
QoS qos = qos();
if(qos != QoS.AT_MOST_ONCE) {
os.writeShort(messageId);
}
for(Topic topic: topics) {
MessageSupport.writeUTF(os, topic.name());
os.writeByte(topic.qos().ordinal());
}