Example #1
0
 /**
  * @param Event $event
  * @return Promise[]
  */
 private function invokeHandlersForEvent(Event $event) : array
 {
     $room = $event instanceof RoomSourcedEvent ? $event->getRoom() : null;
     $filters = array_merge($this->typeFilteredEventHandlers[$event->getTypeId()] ?? [], $room ? $this->roomFilteredEventHandlers[$room->getIdentifier()->getIdentString()] ?? [] : [], $this->filteredEventHandlers);
     $promises = [];
     foreach ($filters as list($plugin, $filter)) {
         /** @var Filter $filter */
         if (($room === null || $this->isPluginEnabledForRoom($plugin, $room)) && ($promise = $filter->executeForEvent($event))) {
             $promises[] = $promise;
         }
     }
     return $promises;
 }