public function observe(Observable $observable) { return $observable->subscribeCallback(function (Event $event) { //$name = basename(str_replace('\\', '/', (is_object($event) ? get_class($event) : $event))); //\Log::info("{$this->preposition} {$name} {$event->name}", $event->labels); if ($this->verbosity == 4) { $this->dump($event->data); } }, function ($e) { if ($this->verbosity == 4) { //\Log::error("{$this->preposition} {$e->getMessage()}"); } else { //\Log::error("{$this->preposition} {$e->getMessage()}", [$e]); } }, function () { //\Log::warning("{$this->preposition} event stream is complete"); }); }
/** * @param Observable $observable * @param LoopInterface|null $loop * @return null * @throws \Exception */ function awaitOnce(Observable $observable, LoopInterface $loop = null) { $loop = $loop ?: \EventLoop\getLoop(); $done = false; $res = null; $observable->subscribeCallback(function ($el) use(&$done, &$res) { $res = $el; $done = true; }, function ($e) use(&$done, &$res) { $res = $e; $done = true; }, function () use(&$done) { $done = true; }, new EventLoopScheduler($loop)); while (!$done) { $loop->tick(); } if ($res instanceof \Exception) { throw $res; } return $res; }