From 7247686e0dfc28af5d7de42a3ef2442a8995c15a Mon Sep 17 00:00:00 2001 From: Arjen Roodselaar Date: Mon, 8 Sep 2014 15:06:31 -0700 Subject: [PATCH] Subscribe to multiple topics using a single request --- MQTT.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/MQTT.py b/MQTT.py index ab0f119..88ac1ff 100644 --- a/MQTT.py +++ b/MQTT.py @@ -391,10 +391,10 @@ def pubcomp(self, messageId): self.transport.write(str(header)) self.transport.write(str(varHeader)) - def subscribe(self, topic, requestedQoS=0, messageId=None): + def subscribe(self, topics, messageId=None): """ - Only supports QoS = 0 subscribes - Only supports one subscription per message + Subscribe to the given topics. Topics is expected to be a list + of (topic, qos) tuples. """ header = bytearray() varHeader = bytearray() @@ -408,8 +408,9 @@ def subscribe(self, topic, requestedQoS=0, messageId=None): else: varHeader.extend(self._encodeValue(messageId)) - payload.extend(self._encodeString(topic)) - payload.append(requestedQoS) + for topic, qos in topics: + payload.extend(self._encodeString(topic)) + payload.append(qos) header.extend(self._encodeLength(len(varHeader) + len(payload)))