def mqtt_unsubscribe(self, topics, packet_id): """ :param topics: array of topics ['/a/b', ...] :return: """ unsubscribe = UnsubscribePacket.build(topics, packet_id) yield from self._send_packet(unsubscribe) waiter = futures.Future(loop=self._loop) self._unsubscriptions_waiter[unsubscribe.variable_header.packet_id] = waiter yield from waiter del self._unsubscriptions_waiter[unsubscribe.variable_header.packet_id]
def mqtt_unsubscribe(self, topics, packet_id): """ :param topics: array of topics ['/a/b', ...] :return: """ unsubscribe = UnsubscribePacket.build(topics, packet_id) yield from self._send_packet(unsubscribe) waiter = futures.Future(loop=self._loop) self._unsubscriptions_waiter[unsubscribe.variable_header.packet_id] = waiter yield from waiter del self._unsubscriptions_waiter[unsubscribe.variable_header.packet_id]
async def mqtt_unsubscribe(self, topics, packet_id): """ :param topics: array of topics ['/a/b', ...] :return: """ waiter = Future() self._unsubscriptions_waiter[packet_id] = waiter try: unsubscribe = UnsubscribePacket.build(topics, packet_id) await self._send_packet(unsubscribe) await waiter.get() finally: del self._unsubscriptions_waiter[packet_id]
def mqtt_unsubscribe(self, topics, packet_id): """ :param topics: array of topics ['/a/b', ...] :return: """ def acknowledged_predicate(): if self.subscriptions[unsubscribe.variable_header.packet_id].state == "acknowledged": return True else: return False unsubscribe = UnsubscribePacket.build(topics, packet_id) yield from self.outgoing_queue.put(unsubscribe) subscription = UnSubscription(unsubscribe.variable_header.packet_id, topics) subscription.unsubscribe() self.subscriptions[unsubscribe.variable_header.packet_id] = subscription self.subscriptions[unsubscribe.variable_header.packet_id] = subscription yield from self._subscriptions_changed.acquire() yield from self._subscriptions_changed.wait_for(acknowledged_predicate) subscription = self.subscriptions.pop(unsubscribe.variable_header.packet_id) self._subscriptions_changed.release() return subscription