예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
 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