<?php declare(strict_types=1); namespace OCA\DavPush\Transport; use OCP\EventDispatcher\IEventDispatcher; use OCA\DavPush\Event\RegisterTransportsEvent; use OCA\DavPush\PushTransports\WebPushTransport; class TransportManager { /** * @var Transport[] */ private array $transports = []; public function __construct(IEventDispatcher $dispatcher) { // register integrated transports $this->registerTransport(new WebPushTransport()); // register transports provided by other apps $event = new RegisterTransportsEvent($this); $dispatcher->dispatchTyped($event); } /** * @return Transport[] */ public function getTransports(): array { return $this->transports; } public function registerTransport(Transport $transport): self { $this->transports[] = $transport; return $this; } }