X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fseekat;a=blobdiff_plain;f=lib%2FAPI%2FInvoker.php;fp=lib%2FAPI%2FInvoker.php;h=0000000000000000000000000000000000000000;hp=c36315eca0c18a4f71bb697bbddf80ff668ce681;hb=2451d97f1cb7b97e445b4dd839835b8673a4d0fc;hpb=3958595e9ff27162ae918db1453ddecd4840d481 diff --git a/lib/API/Invoker.php b/lib/API/Invoker.php deleted file mode 100644 index c36315e..0000000 --- a/lib/API/Invoker.php +++ /dev/null @@ -1,127 +0,0 @@ -client = $client; - - parent::__construct(function($resolve, $reject) { - return $this->cancel($resolve, $reject); - }); - } - - /** - * Invoke $generator to create a \Generator which yields promises - * - * @param callable $generator as function():\Generator, creating a generator yielding promises - * @return Invoker - */ - function invoke(callable $generator) : Invoker { - $this->iterate($generator()); - return $this; - } - - /** - * Iterate over $gen, a \Generator yielding promises - * - * @param Generator $gen - * @return Invoker - */ - function iterate(Generator $gen) : Invoker { - $this->cancelled = false; - - foreach ($gen as $promise) { - if ($this->cancelled) { - break; - } - $this->give($promise, $gen); - } - - if (!$this->cancelled) { - $this->resolve($this->result = $gen->getReturn()); - } - return $this; - } - - /** - * Get the generator's result - * - * @return ExtendedPromiseInterface - */ - function result() : ExtendedPromiseInterface { - return $this->promise(); - } - - /** - * Promise handler - * - * @param array|PromiseInterface $promise - * @param Generator $gen - */ - private function give($promise, Generator $gen) { - if ($promise instanceof PromiseInterface) { - $promise->then(function($result) use($gen) { - if (($promise = $gen->send($result))) { - $this->give($promise, $gen); - } - }); - } else { - all($promise)->then(function($results) use($gen) { - if (($promise = $gen->send($results))) { - $this->give($promise, $gen); - } - }); - } - $this->client->send(); - } - - /** - * Cancellation callback - * - * @param callable $resolve - * @param callable $reject - */ - private function cancel(callable $resolve, callable $reject) { - $this->cancelled = true; - - /* did we finish in the meantime? */ - if ($this->result) { - $resolve($this->result); - } else { - $reject("Cancelled"); - } - } -}