def unsubscribe(self, topic): self._logger.info("Performing sync unsubscribe...") ret = False if ClientStatus.STABLE != self._client_status.get_status(): self._handle_offline_request(RequestTypes.UNSUBSCRIBE, (topic)) else: event = Event() rc, mid = self._unsubscribe_async(topic, self._create_blocking_ack_callback(event)) if not event.wait(self._operation_timeout_sec): self._internal_async_client.remove_event_callback(mid) self._logger.error("Unsubscribe timed out") raise unsubscribeTimeoutException() ret = True return ret
def unsubscribe(self, topic): self._logger.info("Performing sync unsubscribe...") ret = False if ClientStatus.STABLE != self._client_status.get_status(): self._handle_offline_request(RequestTypes.UNSUBSCRIBE, topic) else: event = Event() rc, mid = self._unsubscribe_async(topic, self._create_blocking_ack_callback(event)) if not event.wait(self._operation_timeout_sec): self._internal_async_client.remove_event_callback(mid) self._logger.error("Unsubscribe timed out") raise unsubscribeTimeoutException() ret = True return ret
def unsubscribe(self, topic): if (topic is None): self._log.error("unsubscribe: None type inputs detected.") raise TypeError("None type inputs detected.") self._log.debug("unsubscribe from: " + topic) # Return unsubscribe succeeded/failed ret = False self._unsubscribeLock.acquire() # Unsubscribe (rc, mid) = self._pahoClient.unsubscribe(topic) # Throw exception... self._log.debug("Started an unsubscribe request " + str(mid)) TenmsCount = 0 while (TenmsCount != self._mqttOperationTimeout * 100 and not self._unsubscribeSent): TenmsCount += 1 time.sleep(0.01) if (self._unsubscribeSent): ret = rc == 0 if (ret): try: del self._subscribePool[topic] except KeyError: pass # Ignore topics that are never subscribed to self._log.debug("Unsubscribe request " + str(mid) + " succeeded. Time consumption: " + str(float(TenmsCount) * 10) + "ms.") self._pahoClient.message_callback_remove(topic) self._log.debug("Remove the callback.") else: self._log.error("Unsubscribe request " + str(mid) + " failed with code: " + str(rc)) self._unsubscribeLock.release( ) # Release the lock when exception is raised raise unsubscribeError(rc) else: # Unsubscribe timeout self._log.error("No feedback detected for unsubscribe request " + str(mid) + ". Timeout and failed.") self._unsubscribeLock.release( ) # Release the lock when exception is raised raise unsubscribeTimeoutException() self._unsubscribeSent = False self._log.debug( "Recover unsubscribe context for the next request: unsubscribeSent: " + str(self._unsubscribeSent)) self._unsubscribeLock.release() return ret
def unsubscribe(self, topic): if(topic is None): self._log.error("unsubscribe: None type inputs detected.") raise TypeError("None type inputs detected.") self._log.debug("unsubscribe from: " + topic) # Return unsubscribe succeeded/failed ret = False self._unsubscribeLock.acquire() # Unsubscribe (rc, mid) = self._pahoClient.unsubscribe(topic) # Throw exception... self._log.debug("Started an unsubscribe request " + str(mid)) TenmsCount = 0 while(TenmsCount != self._mqttOperationTimeout * 100 and not self._unsubscribeSent): TenmsCount += 1 time.sleep(0.01) if(self._unsubscribeSent): ret = rc == 0 if(ret): try: del self._subscribePool[topic] except KeyError: pass # Ignore topics that are never subscribed to self._log.debug("Unsubscribe request " + str(mid) + " succeeded. Time consumption: " + str(float(TenmsCount) * 10) + "ms.") self._pahoClient.message_callback_remove(topic) self._log.debug("Remove the callback.") else: self._log.error("Unsubscribe request " + str(mid) + " failed with code: " + str(rc)) self._unsubscribeLock.release() # Release the lock when exception is raised raise unsubscribeError(rc) else: # Unsubscribe timeout self._log.error("No feedback detected for unsubscribe request " + str(mid) + ". Timeout and failed.") self._unsubscribeLock.release() # Release the lock when exception is raised raise unsubscribeTimeoutException() self._unsubscribeSent = False self._log.debug("Recover unsubscribe context for the next request: unsubscribeSent: " + str(self._unsubscribeSent)) self._unsubscribeLock.release() return ret