Commit inicial con archivos existentes
This commit is contained in:
55
vendor/react/promise/src/CancellationQueue.php
vendored
Executable file
55
vendor/react/promise/src/CancellationQueue.php
vendored
Executable file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace React\Promise;
|
||||
|
||||
class CancellationQueue
|
||||
{
|
||||
private $started = false;
|
||||
private $queue = [];
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
if ($this->started) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->started = true;
|
||||
$this->drain();
|
||||
}
|
||||
|
||||
public function enqueue($cancellable)
|
||||
{
|
||||
if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$length = \array_push($this->queue, $cancellable);
|
||||
|
||||
if ($this->started && 1 === $length) {
|
||||
$this->drain();
|
||||
}
|
||||
}
|
||||
|
||||
private function drain()
|
||||
{
|
||||
for ($i = key($this->queue); isset($this->queue[$i]); $i++) {
|
||||
$cancellable = $this->queue[$i];
|
||||
|
||||
$exception = null;
|
||||
|
||||
try {
|
||||
$cancellable->cancel();
|
||||
} catch (\Throwable $exception) {
|
||||
} catch (\Exception $exception) {
|
||||
}
|
||||
|
||||
unset($this->queue[$i]);
|
||||
|
||||
if ($exception) {
|
||||
throw $exception;
|
||||
}
|
||||
}
|
||||
|
||||
$this->queue = [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user