function UvDriver::deactivate
Overrides AbstractDriver::deactivate
File
-
vendor/
revolt/ event-loop/ src/ EventLoop/ Driver/ UvDriver.php, line 211
Class
Namespace
Revolt\EventLoop\DriverCode
protected function deactivate(DriverCallback $callback) : void {
$id = $callback->id;
if (!isset($this->events[$id])) {
return;
}
$event = $this->events[$id];
if (!\uv_is_active($event)) {
return;
}
if ($callback instanceof StreamCallback) {
$flags = 0;
foreach ($this->uvCallbacks[(int) $event] as $w) {
\assert($w instanceof StreamCallback);
$flags |= $w->invokable ? $this->getStreamCallbackFlags($w) : 0;
}
if ($flags) {
\uv_poll_start($event, $flags, $this->ioCallback);
}
else {
\uv_poll_stop($event);
}
}
elseif ($callback instanceof TimerCallback) {
\uv_timer_stop($event);
}
elseif ($callback instanceof SignalCallback) {
\uv_signal_stop($event);
}
else {
// @codeCoverageIgnoreStart
throw new \Error("Unknown callback type");
// @codeCoverageIgnoreEnd
}
}