Пример #1
0
 public function whenResponseTo(RemoteEventMessage $message, $timeout = null)
 {
     $deferred = new Deferred();
     $tag = $message->getTag();
     $this->deferred[$tag] = $deferred;
     $this->carrierProtocol->sendString($message->toJson());
     $this->logger->debug(sprintf("Awaiting response to '%s'%s with %s", $message->getData(), $message->getRoom() ? " in room " . $message->getRoom() : '', $timeout ? "timeout {$timeout}" : 'no timeout'));
     if ($timeout) {
         $list =& $this->deferred;
         $logger = $this->logger;
         $this->timers[$tag] = $this->loop->addTimer($timeout, function () use($deferred, &$list, $tag, $logger) {
             unset($list[$tag]);
             $logger->debug("Request with tag {$tag} has timed out");
             $deferred->reject("Timeout occurred");
         });
     }
     return $deferred->promise();
 }