예제 #1
0
 def publish(self, topic, payload, qos, retain=False):
     self._logger.info("Performing sync publish...")
     ret = False
     if ClientStatus.STABLE != self._client_status.get_status():
         self._handle_offline_request(RequestTypes.PUBLISH, (topic, payload, qos, retain))
     else:
         if qos > 0:
             event = Event()
             rc, mid = self._publish_async(topic, payload, qos, retain, 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("Publish timed out")
                 raise publishTimeoutException()
         else:
             self._publish_async(topic, payload, qos, retain)
         ret = True
     return ret
예제 #2
0
 def publish(self, topic, payload, qos, retain=False):
     self._logger.info("Performing sync publish...")
     ret = False
     if ClientStatus.STABLE != self._client_status.get_status():
         self._handle_offline_request(RequestTypes.PUBLISH, (topic, payload, qos, retain))
     else:
         if qos > 0:
             event = Event()
             rc, mid = self._publish_async(topic, payload, qos, retain, 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("Publish timed out")
                 raise publishTimeoutException()
         else:
             self._publish_async(topic, payload, qos, retain)
         ret = True
     return ret