function StreamSelectDriver::deactivate
Overrides AbstractDriver::deactivate
1 call to StreamSelectDriver::deactivate()
- StreamSelectDriver::__destruct in vendor/
revolt/ event-loop/ src/ EventLoop/ Driver/ StreamSelectDriver.php
File
-
vendor/
revolt/ event-loop/ src/ EventLoop/ Driver/ StreamSelectDriver.php, line 190
Class
Namespace
Revolt\EventLoop\DriverCode
protected function deactivate(DriverCallback $callback) : void {
if ($callback instanceof StreamReadableCallback) {
$streamId = (int) $callback->stream;
unset($this->readCallbacks[$streamId][$callback->id]);
if (empty($this->readCallbacks[$streamId])) {
unset($this->readCallbacks[$streamId], $this->readStreams[$streamId]);
}
}
elseif ($callback instanceof StreamWritableCallback) {
$streamId = (int) $callback->stream;
unset($this->writeCallbacks[$streamId][$callback->id]);
if (empty($this->writeCallbacks[$streamId])) {
unset($this->writeCallbacks[$streamId], $this->writeStreams[$streamId]);
}
}
elseif ($callback instanceof TimerCallback) {
$this->timerQueue
->remove($callback);
}
elseif ($callback instanceof SignalCallback) {
if (isset($this->signalCallbacks[$callback->signal])) {
unset($this->signalCallbacks[$callback->signal][$callback->id]);
if (empty($this->signalCallbacks[$callback->signal])) {
unset($this->signalCallbacks[$callback->signal]);
\set_error_handler(static fn() => true);
try {
\pcntl_signal($callback->signal, \SIG_DFL);
} finally {
\restore_error_handler();
}
}
}
}
else {
// @codeCoverageIgnoreStart
throw new \Error("Unknown callback type");
// @codeCoverageIgnoreEnd
}
}