Example #1
0
 public function start()
 {
     $packet = new PublishRequestPacket();
     $packet->setTopic($this->message->getTopic());
     $packet->setPayload($this->message->getPayload());
     $packet->setRetained($this->message->isRetained());
     $packet->setDuplicate($this->message->isDuplicate());
     $packet->setQosLevel($this->message->getQosLevel());
     if ($this->message->getQosLevel() === 0) {
         $this->succeed($this->message);
     } else {
         $packet->setIdentifier($this->identifier);
     }
     return $packet;
 }
 /**
  * Calls the given generator periodically and publishes the return value.
  *
  * @param int      $interval
  * @param Message  $message
  * @param callable $generator
  *
  * @return ExtendedPromiseInterface
  */
 public function publishPeriodically($interval, Message $message, callable $generator)
 {
     if (!$this->isConnected) {
         return new RejectedPromise(new \LogicException('The client is not connected.'));
     }
     $deferred = new Deferred();
     $this->timer[] = $this->loop->addPeriodicTimer($interval, function () use($message, $generator, $deferred) {
         $this->publish($message->withPayload($generator($message->getTopic())))->then(function ($value) use($deferred) {
             $deferred->notify($value);
         }, function (\Exception $e) use($deferred) {
             $deferred->reject($e);
         });
     });
     return $deferred->promise();
 }