JezK
Edit File: SyncPromiseQueue.php
<?php declare(strict_types=1); namespace Automattic\WooCommerce\Vendor\GraphQL\Executor\Promise\Adapter; /** * Queue for deferred execution of SyncPromise tasks. * * Owns the shared queue and provides the run loop for processing promises. * * @api * * @phpstan-type Task callable(): void */ class SyncPromiseQueue { /** * Adds a task to the queue. * * @param Task $task * * @api */ public static function enqueue(callable $task): void { self::queue()->enqueue($task); } /** * Process all queued promises until the queue is empty. * * @api */ public static function run(): void { $queue = self::queue(); while (! $queue->isEmpty()) { $task = $queue->dequeue(); $task(); } } /** * Check if the queue is empty. * * @api */ public static function isEmpty(): bool { return self::queue()->isEmpty(); } /** * Return the number of tasks in the queue. * * @api */ public static function count(): int { return self::queue()->count(); } /** * TODO change to protected in next major version. * * @return \SplQueue<Task> */ public static function queue(): \SplQueue { /** @var \SplQueue<Task>|null $queue */ static $queue; return $queue ??= new \SplQueue(); } }