diff options
Diffstat (limited to 'Postman/Postman-Mail/mailgun/vendor/php-http/curl-client/src/MultiRunner.php')
-rw-r--r-- | Postman/Postman-Mail/mailgun/vendor/php-http/curl-client/src/MultiRunner.php | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/Postman/Postman-Mail/mailgun/vendor/php-http/curl-client/src/MultiRunner.php b/Postman/Postman-Mail/mailgun/vendor/php-http/curl-client/src/MultiRunner.php deleted file mode 100644 index 9094c0f..0000000 --- a/Postman/Postman-Mail/mailgun/vendor/php-http/curl-client/src/MultiRunner.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php -namespace Http\Client\Curl; - -use Http\Client\Exception\RequestException; - -/** - * Simultaneous requests runner - * - * @license http://opensource.org/licenses/MIT MIT - * - * @author Михаил Красильников <m.krasilnikov@yandex.ru> - */ -class MultiRunner -{ - /** - * cURL multi handle - * - * @var resource|null - */ - private $multiHandle = null; - - /** - * Awaiting cores - * - * @var PromiseCore[] - */ - private $cores = []; - - /** - * Release resources if still active - */ - public function __destruct() - { - if (is_resource($this->multiHandle)) { - curl_multi_close($this->multiHandle); - } - } - - /** - * Add promise to runner - * - * @param PromiseCore $core - */ - public function add(PromiseCore $core) - { - foreach ($this->cores as $existed) { - if ($existed === $core) { - return; - } - } - - $this->cores[] = $core; - - if (null === $this->multiHandle) { - $this->multiHandle = curl_multi_init(); - } - curl_multi_add_handle($this->multiHandle, $core->getHandle()); - } - - /** - * Remove promise from runner - * - * @param PromiseCore $core - */ - public function remove(PromiseCore $core) - { - foreach ($this->cores as $index => $existed) { - if ($existed === $core) { - curl_multi_remove_handle($this->multiHandle, $core->getHandle()); - unset($this->cores[$index]); - return; - } - } - } - - /** - * Wait for request(s) to be completed. - * - * @param PromiseCore|null $targetCore - */ - public function wait(PromiseCore $targetCore = null) - { - do { - $status = curl_multi_exec($this->multiHandle, $active); - $info = curl_multi_info_read($this->multiHandle); - if (false !== $info) { - $core = $this->findCoreByHandle($info['handle']); - - if (null === $core) { - // We have no promise for this handle. Drop it. - curl_multi_remove_handle($this->multiHandle, $info['handle']); - continue; - } - - if (CURLE_OK === $info['result']) { - $core->fulfill(); - } else { - $error = curl_error($core->getHandle()); - $core->reject(new RequestException($error, $core->getRequest())); - } - $this->remove($core); - - // This is a promise we are waited for. So exiting wait(). - if ($core === $targetCore) { - return; - } - } - } while ($status === CURLM_CALL_MULTI_PERFORM || $active); - } - - /** - * Find core by handle. - * - * @param resource $handle - * - * @return PromiseCore|null - */ - private function findCoreByHandle($handle) - { - foreach ($this->cores as $core) { - if ($core->getHandle() === $handle) { - return $core; - } - } - return null; - } -} |