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

Breadcrumb

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

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

StreamSelectDriver

Namespace

Revolt\EventLoop\Driver

Code

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
    }
}
RSS feed
Powered by Drupal