You are here

public function Pool::__construct in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/guzzle/src/Pool.php \GuzzleHttp\Pool::__construct()

Parameters

ClientInterface $client Client used to send the requests.:

array|\Iterator $requests Requests or functions that return: requests to send concurrently.

array $config Associative array of options:

  • concurrency: (int) Maximum number of requests to send concurrently
  • options: Array of request options to apply to each request.
  • fulfilled: (callable) Function to invoke when a request completes.
  • rejected: (callable) Function to invoke when a request is rejected.

File

vendor/guzzlehttp/guzzle/src/Pool.php, line 34

Class

Pool
Sends and iterator of requests concurrently using a capped pool size.

Namespace

GuzzleHttp

Code

public function __construct(ClientInterface $client, $requests, array $config = []) {

  // Backwards compatibility.
  if (isset($config['pool_size'])) {
    $config['concurrency'] = $config['pool_size'];
  }
  elseif (!isset($config['concurrency'])) {
    $config['concurrency'] = 25;
  }
  if (isset($config['options'])) {
    $opts = $config['options'];
    unset($config['options']);
  }
  else {
    $opts = [];
  }
  $iterable = \GuzzleHttp\Promise\iter_for($requests);
  $requests = function () use ($iterable, $client, $opts) {
    foreach ($iterable as $rfn) {
      if ($rfn instanceof RequestInterface) {
        (yield $client
          ->sendAsync($rfn, $opts));
      }
      elseif (is_callable($rfn)) {
        (yield $rfn($opts));
      }
      else {
        throw new \InvalidArgumentException('Each value yielded by ' . 'the iterator must be a Psr7\\Http\\Message\\RequestInterface ' . 'or a callable that returns a promise that fulfills ' . 'with a Psr7\\Message\\Http\\ResponseInterface object.');
      }
    }
  };
  $this->each = new EachPromise($requests(), $config);
}