/** * @inheritDoc */ public function preProcessAuthenticate(array $args) { if (!isset($args[0]) && !is_object($args[0])) { return ["FAILURE"]; } $authInfo = $args[0]; if (isset($authInfo->authid) && isset($authInfo->signature)) { // lookup the user $query = (new \React\MySQL\Query("SELECT id FROM users WHERE login = ? AND password = ?"))->bindParams($authInfo->authid, $authInfo->signature); $deferred = new \React\Promise\Deferred(); $this->mysqlConnection->query($query->getSql(), function ($command, $conn) use($deferred) { if ($command->hasError()) { //test whether the query was executed successfully //error $error = $command->getError(); // get the error object, instance of Exception. $this->resolve(['FAILURE']); } else { $results = $command->resultRows; //get the results $fields = $command->resultFields; // get table fields if (count($results) > 0) { $deferred->resolve(['SUCCESS']); } else { $deferred->resolve(['FAILURE']); } } }); return $deferred->promise(); } return ["FAILURE"]; }
/** * @param InputInterface $input * @param OutputInterface $output * @return int */ protected function execute(InputInterface $input, OutputInterface $output) { $loop = \React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($loop); $dns = $factory->getDns(); $peerFactory = $factory->getPeerFactory($dns); $timeout = $input->getOption('timeout'); $host = $peerFactory->getAddress($input->getArgument('host')); $deferred = new \React\Promise\Deferred(); $peer = $peerFactory->getPeer(); $peer->on('version', function (Peer $peer, Version $ver) use($deferred) { $deferred->resolve([$peer, $ver]); }); $deferred->promise()->then(function ($arr) use($loop, $output, &$userHost) { list(, $msg) = $arr; $loop->stop(); $this->renderVersion($output, $userHost, $msg); }); $loop->addPeriodicTimer($timeout, function (Timer $timer) use($loop, $output, &$userHost) { $loop->stop(); $timer->cancel(); $this->renderTimeout($output, $userHost); }); $peer->connect($peerFactory->getConnector(), $host); $loop->run(); return 0; }
public function theFunction() { $futureResult = new \React\Promise\Deferred(); $this->getCaller()->call($this->session, 'com.example.thefunction' . ($this->number + 1), array())->then(function ($res) use($futureResult) { $res[0] = $res[0] . "."; $futureResult->resolve($res); }); return $futureResult->promise(); }
public function callPublish($args) { $deferred = new \React\Promise\Deferred(); $this->getPublisher()->publish($this->session, "com.example.publish", [$args[0]], ["key1" => "test1", "key2" => "test2"], ["acknowledge" => true])->then(function () use($deferred) { $deferred->resolve('ok'); }, function ($error) use($deferred) { $deferred->reject("failed: {$error}"); }); return $deferred->promise(); }
public function createTickPromise($value = NULL, $numTicks = 1) { $d = new React\Promise\Deferred(); $this->onTick[] = function () use($value, &$numTicks, $d) { if (--$numTicks === 0) { $d->resolve($value); } }; return $d; }
public function thePartitionedRPC2($args) { $this->_result .= "[start 2(" . $args[0] . ")]"; $deferred = new \React\Promise\Deferred(); $loop = $this->_conn->getClient()->getLoop(); $loop->addTimer(1, function () use($deferred, $args) { $deferred->resolve("[RPC 2(" . $args[0] . ")]"); }); return $deferred->promise(); }
/** * Handle for RPC 'com.example.thefunction{$number}' * * @return \React\Promise\Promise */ public function theFunction() { $futureResult = new \React\Promise\Deferred(); $this->session->call('com.example.thefunction' . ($this->number + 1), [])->then(function ($res) use($futureResult) { if (is_scalar($res[0])) { $res[0] = $res[0] . "."; } $futureResult->resolve($res[0]); }); return $futureResult->promise(); }
public function test_react_2() { $deferred = new \React\Promise\Deferred(); $promise = $deferred->promise()->then(function ($value) { sleep(5); echo "hhaha 1" . $value; })->then(function ($value) { sleep(3); echo "hhaha 2" . $value; })->then(function ($value) { echo "hhaha 3" . $value; }); $deferred->resolve('abc'); }
/** * @return \React\Promise\Promise */ public function perform() { $instance = $this->getInstance(); $deferred = new \React\Promise\Deferred(); $promise = $deferred->promise(); $promise->then(function () { $this->worker->processing++; }); if (method_exists($instance, 'setUp')) { $promise = $promise->then(function () use($instance) { return \React\Promise\resolve($instance->setUp()); }); } $promise = $promise->then(function () use($instance) { return $instance->perform(); }); if (method_exists($instance, 'tearDown')) { $promise = $promise->then(function ($response = null) use($instance) { return \React\Promise\resolve($instance->tearDown()); }); } $promise->then(function ($responses = null) { $this->worker->processing--; $this->worker->processed++; }, function ($e) { $this->worker->processing--; $this->worker->processed++; if ($e instanceof \Exception) { error_log(sprintf('%s:%s in %s at %d', get_class($e), $e->getMessage(), __FILE__, __LINE__)); } error_log($e); }); $deferred->resolve(); return $promise; }
<?php require 'vendor/autoload.php'; $i = 0; $loop = \React\EventLoop\Factory::create(); $deferred = new \React\Promise\Deferred(); $timer = $loop->addPeriodicTimer(0.01, function (\React\EventLoop\Timer\Timer $timer) use(&$i, $deferred) { $deferred->notify($i++); if ($i >= 66) { $timer->cancel(); $deferred->resolve(); } }); $deferred->promise()->then(function ($i) { echo 'Done!', PHP_EOL; }, null, function ($i) { echo $i, PHP_EOL; }); $loop->run();
<?php require_once "../vendor/autoload.php"; use BitWasp\Bitcoin\Networking\Peer\Peer; $loop = React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($loop); $peerFactory = $factory->getPeerFactory($factory->getDns()); $host = $peerFactory->getAddress('147.87.116.162'); $local = $peerFactory->getAddress('192.168.192.39'); $deferred = new \React\Promise\Deferred(); $peer = $peerFactory->getPeer(); $peer->on('version', function (Peer $peer, \BitWasp\Bitcoin\Networking\Messages\Version $ver) use($deferred) { $deferred->resolve($ver); }); $peer->on('ready', function (Peer $peer) use($factory) { $peer->close(); }); $connector = $peerFactory->getConnector(); $peer->requestRelay()->connect($connector, $host); $deferred->promise()->then(function ($msg) use($loop) { print_r($msg); $loop->stop(); }); $loop->run();
public function callReturnSomeProgress($args, $argsKw, $details) { if (is_array($details) && isset($details['receive_progress']) && $details['receive_progress']) { $deferred = new \React\Promise\Deferred(); $this->getLoop()->addTimer(1, function () use($deferred) { $deferred->progress(1); }); $this->getLoop()->addTimer(2, function () use($deferred) { $deferred->progress(2); }); $this->getLoop()->addTimer(3, function () use($deferred) { $deferred->resolve("DONE"); }); return $deferred->promise(); } else { throw new \Exception("receive_progress option not set"); } }
/** * @param callable $wait * @param callable|null $cancel * @return \GuzzleHttp\Message\FutureResponse */ private function createFuture(callable $wait, callable $cancel = null) { $deferred = new \React\Promise\Deferred(); return new \GuzzleHttp\Message\FutureResponse($deferred->promise(), function () use($deferred, $wait) { $deferred->resolve($wait()); }, $cancel); }