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

Breadcrumb

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

function EvDriver::activate

Overrides AbstractDriver::activate

File

vendor/revolt/event-loop/src/EventLoop/Driver/EvDriver.php, line 163

Class

EvDriver

Namespace

Revolt\EventLoop\Driver

Code

protected function activate(array $callbacks) : void {
    $this->handle
        ->nowUpdate();
    $now = $this->now();
    foreach ($callbacks as $callback) {
        if (!isset($this->events[$id = $callback->id])) {
            if ($callback instanceof StreamReadableCallback) {
                \assert(\is_resource($callback->stream));
                $this->events[$id] = $this->handle
                    ->io($callback->stream, \Ev::READ, $this->ioCallback, $callback);
            }
            elseif ($callback instanceof StreamWritableCallback) {
                \assert(\is_resource($callback->stream));
                $this->events[$id] = $this->handle
                    ->io($callback->stream, \Ev::WRITE, $this->ioCallback, $callback);
            }
            elseif ($callback instanceof TimerCallback) {
                $interval = $callback->interval;
                $this->events[$id] = $this->handle
                    ->timer(\max(0, $callback->expiration - $now), $callback->repeat ? $interval : 0, $this->timerCallback, $callback);
            }
            elseif ($callback instanceof SignalCallback) {
                $this->events[$id] = $this->handle
                    ->signal($callback->signal, $this->signalCallback, $callback);
            }
            else {
                // @codeCoverageIgnoreStart
                throw new \Error("Unknown callback type: " . \get_class($callback));
                // @codeCoverageIgnoreEnd
            }
        }
        else {
            $this->events[$id]
                ->start();
        }
        if ($callback instanceof SignalCallback) {
            
            /** @psalm-suppress PropertyTypeCoercion */
            $this->signals[$id] = $this->events[$id];
        }
    }
}
RSS feed
Powered by Drupal