You are here

class TaskQueue in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/promises/src/TaskQueue.php \GuzzleHttp\Promise\TaskQueue

A task queue that executes tasks in a FIFO order.

This task queue class is used to settle promises asynchronously and maintains a constant stack size. You can use the task queue asynchronously by calling the `run()` function of the global task queue in an event loop.

GuzzleHttp\Promise\queue()->run();

Hierarchy

Expanded class hierarchy of TaskQueue

1 file declares its use of TaskQueue
TaskQueueTest.php in vendor/guzzlehttp/promises/tests/TaskQueueTest.php

File

vendor/guzzlehttp/promises/src/TaskQueue.php, line 13

Namespace

GuzzleHttp\Promise
View source
class TaskQueue {
  private $enableShutdown = true;
  private $queue = [];
  public function __construct($withShutdown = true) {
    if ($withShutdown) {
      register_shutdown_function(function () {
        if ($this->enableShutdown) {

          // Only run the tasks if an E_ERROR didn't occur.
          $err = error_get_last();
          if (!$err || $err['type'] ^ E_ERROR) {
            $this
              ->run();
          }
        }
      });
    }
  }

  /**
   * Returns true if the queue is empty.
   *
   * @return bool
   */
  public function isEmpty() {
    return !$this->queue;
  }

  /**
   * Adds a task to the queue that will be executed the next time run is
   * called.
   *
   * @param callable $task
   */
  public function add(callable $task) {
    $this->queue[] = $task;
  }

  /**
   * Execute all of the pending task in the queue.
   */
  public function run() {
    while ($task = array_shift($this->queue)) {
      $task();
    }
  }

  /**
   * The task queue will be run and exhausted by default when the process
   * exits IFF the exit is not the result of a PHP E_ERROR error.
   *
   * You can disable running the automatic shutdown of the queue by calling
   * this function. If you disable the task queue shutdown process, then you
   * MUST either run the task queue (as a result of running your event loop
   * or manually using the run() method) or wait on each outstanding promise.
   *
   * Note: This shutdown will occur before any destructors are triggered.
   */
  public function disableShutdown() {
    $this->enableShutdown = false;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
TaskQueue::$enableShutdown private property
TaskQueue::$queue private property
TaskQueue::add public function Adds a task to the queue that will be executed the next time run is called.
TaskQueue::disableShutdown public function The task queue will be run and exhausted by default when the process exits IFF the exit is not the result of a PHP E_ERROR error.
TaskQueue::isEmpty public function Returns true if the queue is empty.
TaskQueue::run public function Execute all of the pending task in the queue.
TaskQueue::__construct public function