/**
  * @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;
 }
Exemplo n.º 3
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();
 }
Exemplo n.º 4
0
 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();
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 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();
 }
Exemplo n.º 7
0
 /**
  * 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();
 }
Exemplo n.º 8
0
 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');
 }
Exemplo n.º 9
0
 /**
  * @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;
 }
Exemplo n.º 10
0
<?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();
Exemplo n.º 11
0
<?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();
Exemplo n.º 12
0
 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);
 }