Beispiel #1
0
 public function createClient($address = null)
 {
     $parts = $this->parseUrl($address);
     $secure = isset($parts['schema']) && $parts['schema'] !== 'tcp';
     $connector = $secure ? $this->secureConnector : $this->connector;
     $promise = $connector->create($parts['host'], $parts['port'])->then(function (Stream $stream) {
         return new Client($stream);
     });
     if (isset($parts['user'])) {
         $promise = $promise->then(function (Client $client) use($parts, $secure) {
             $sender = new ActionSender($client);
             return $sender->login($parts['user'], $parts['pass'])->then(function ($response) use($client) {
                 return $client;
             }, function ($error) use($client) {
                 $client->close();
                 throw $error;
             });
         });
     }
     return $promise;
 }
Beispiel #2
0
 /**
  * Create client.
  *
  * @param array $options
  *
  * @return \React\Promise\Promise
  */
 public function create(array $options = [])
 {
     foreach (['host', 'port', 'username', 'secret'] as $key) {
         $options[$key] = Arr::get($options, $key, null);
     }
     $promise = $this->connector->create($options['host'], $options['port'])->then(function (Stream $stream) {
         return new Client($stream, new Parser());
     });
     if (!is_null($options['username'])) {
         $promise = $promise->then(function (Client $client) use($options) {
             $sender = new ActionSender($client);
             return $sender->login($options['username'], $options['secret'])->then(function () use($client) {
                 return $client;
             }, function ($error) use($client) {
                 $client->close();
                 throw $error;
             });
         }, function ($error) {
             throw $error;
         });
     }
     return $promise;
 }