function DriverSuspension::resume
Overrides Suspension::resume
File
-
vendor/
revolt/ event-loop/ src/ EventLoop/ Internal/ DriverSuspension.php, line 44
Class
- DriverSuspension
- @internal
Namespace
Revolt\EventLoop\InternalCode
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);
}
}