X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fseekat;a=blobdiff_plain;f=lib%2FAPI%2FFuture%2Ffunctions.php;h=b6e890886aa511a8b8152fd9f308dbc7c1d03087;hp=34d38c5adbe78d55c59b9c3a223f8cea11017aa0;hb=e368287b3cd2dd40945ac8d1a1946bc32268007d;hpb=f4aa6beaf2e1f0dc9c877782cbbad5a989194517 diff --git a/lib/API/Future/functions.php b/lib/API/Future/functions.php index 34d38c5..b6e8908 100644 --- a/lib/API/Future/functions.php +++ b/lib/API/Future/functions.php @@ -4,7 +4,6 @@ namespace seekat\API\Future; use Amp\Deferred as AmpDeferred; use AsyncInterop\Promise; -use Icicle\Awaitable\Deferred as IcicleDeferred; use React\Promise\Deferred as ReactDeferred; use seekat\API\Future; @@ -57,9 +56,9 @@ function rejecter(Future $future, $context) { * @param mixed $context Promisor * @return \Closure */ -function updater(Future $future, $context) { - return function($update) use($future, $context) { - return $future->onUpdate($context, $update); +function reducer(Future $future, $context) { + return function(array $promises) use($future, $context) : Promise { + return $future->onMultiple($context, $promises); }; } @@ -81,6 +80,12 @@ function react() { return $context->promise(); } + function cancelPromise(Promise $promise) : bool { + /* @var $promise \React\Promise\Promise */ + $promise->cancel(); + return true; + } + function onSuccess($context, $value) { /* @var $context ReactDeferred */ $context->resolve($value); @@ -91,9 +96,8 @@ function react() { $context->reject($reason); } - function onUpdate($context, $update) { - /* @var $context ReactDeferred */ - $context->notify($update); + function onMultiple($context, array $promises) : Promise { + return \React\Promise\all($promises); } }; } @@ -115,54 +119,22 @@ function amp() { return $context->promise(); } - function onSuccess($context, $value) { - /* @var $context AmpDeferred */ - $context->resolve($value); - } - - function onFailure($context, $reason) { - /* @var $context AmpDeferred */ - $context->fail($reason); - } - - function onUpdate($context, $update) { - /* @var $context AmpDeferred */ - /* noop */ - } - }; -} - -/** - * @return Future - */ -function icicle() { - return new class implements Future { - /** - * @param callable|null $onCancel - * @return IcicleDeferred - */ - function createContext(callable $onCancel = null) { - return new IcicleDeferred($onCancel); - } - - function getPromise($context): Promise { - /* @var $context IcicleDeferred */ - return $context->getPromise(); + function cancelPromise(Promise $promise) : bool { + return false; } function onSuccess($context, $value) { - /* @var $context IcicleDeferred */ + /* @var $context AmpDeferred */ $context->resolve($value); } function onFailure($context, $reason) { - /* @var $context IcicleDeferred */ - $context->reject($reason); + /* @var $context AmpDeferred */ + $context->fail(\seekat\Exception\exception($reason)); } - function onUpdate($context, $update) { - /* @var $context IcicleDeferred */ - /* noop */ + function onMultiple($context, array $promises) : Promise { + return \Amp\all($promises); } }; }