/** * @param StreamName $streamName * @param array $metadata * @param null|int $minVersion * @return Message[] */ public function loadEventsByMetadataFrom(StreamName $streamName, array $metadata, $minVersion = null) { $argv = ['streamName' => $streamName, 'metadata' => $metadata, 'minVersion' => $minVersion]; $event = $this->actionEventEmitter->getNewActionEvent(__FUNCTION__ . '.pre', $this, $argv); $this->getActionEventEmitter()->dispatch($event); if ($event->propagationIsStopped()) { return $event->getParam('streamEvents', []); } $streamName = $event->getParam('streamName'); $metadata = $event->getParam('metadata'); $minVersion = $event->getParam('minVersion'); $events = $this->adapter->loadEventsByMetadataFrom($streamName, $metadata, $minVersion); $event->setName(__FUNCTION__ . '.post'); $event->setParam('streamEvents', $events); $this->getActionEventEmitter()->dispatch($event); if ($event->propagationIsStopped()) { return []; } return $event->getParam('streamEvents'); }