Example #1
0
 /**
  * @param RequestInterface $request
  *
  * @return PromiseInterface
  */
 public function sendRequest(RequestInterface $request)
 {
     if (isset($this->promises[$request->getRequestId()])) {
         return promise\reject(new ClientException("ID {$request->getRequestId()} already in use"));
     }
     $this->responseBuilders[$request->getRequestId()] = new ResponseParser($request->getRequestId());
     $this->promises[$request->getRequestId()] = new Deferred();
     foreach ($request->toRecords() as $record) {
         $this->connector->write($record->encode());
     }
     return $this->promises[$request->getRequestId()]->promise();
 }
Example #2
0
File: Log.php Project: clue/psocksd
 public function __construct($server, DuplexStreamInterface $stdio)
 {
     $server->on('connection', function (\React\Socket\Connection $client) use($stdio) {
         $name = '#' . (int) $client->stream;
         $log = function ($msg) use($client, &$name, $stdio) {
             $stdio->write(date('Y-m-d H:i:s') . ' ' . $name . ' ' . $msg . PHP_EOL);
         };
         $log('connected');
         $client->on('error', function ($error) use($log) {
             $msg = $error->getMessage();
             while ($error->getPrevious() !== null) {
                 $error = $error->getPrevious();
                 $msg .= ' - ' . $error->getMessage();
             }
             $log('error: ' . $msg);
         });
         $client->on('target', function ($host, $port) use($log) {
             $log('tunnel target: ' . $host . ':' . $port);
         });
         $client->on('auth', function ($username) use($log, &$name) {
             $name .= '(' . $username . ')';
             $log('client authenticated');
         });
         $client->on('ready', function (\React\Stream\Stream $remote) use($log) {
             $log('tunnel to remote stream #' . (int) $remote->stream . ' successfully established');
         });
         $client->on('close', function () use($log, &$client) {
             $dump = '';
             $client->emit('dump-close', array(&$dump));
             $log('disconnected' . $dump);
         });
     });
 }