Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. DriverSuspension.php

function DriverSuspension::resume

Overrides Suspension::resume

File

vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php, line 44

Class

DriverSuspension
@internal

Namespace

Revolt\EventLoop\Internal

Code

public function resume(mixed $value = null) : void {
    // Ignore spurious resumes to old dead {main} suspension
    if ($this->deadMain) {
        return;
    }
    if (!$this->pending) {
        throw $this->error ?? new \Error('Must call suspend() before calling resume()');
    }
    $this->pending = false;
    
    /** @var \Fiber|null $fiber */
    $fiber = $this->fiberRef?->get();
    if ($fiber) {
        ($this->queue)(static function () use ($fiber, $value) : void {
            // The fiber may be destroyed with suspension as part of the GC cycle collector.
            if (!$fiber->isTerminated()) {
                $fiber->resume($value);
            }
        });
    }
    else {
        // Suspend event loop fiber to {main}.
        ($this->interrupt)(static fn() => $value);
    }
}
RSS feed
Powered by Drupal