/**
* @param StreamName $streamName
* @param Iterator $streamEvents
* @throws Exception\RuntimeException
* @return void
*/
public function appendTo(StreamName $streamName, Iterator $streamEvents)
{
$argv = ['streamName' => $streamName, 'streamEvents' => $streamEvents];
$event = $this->actionEventEmitter->getNewActionEvent(__FUNCTION__ . '.pre', $this, $argv);
$this->getActionEventEmitter()->dispatch($event);
if ($event->propagationIsStopped()) {
return;
}
if (!$this->inTransaction) {
throw new RuntimeException('Append events to stream failed. EventStore is not in an active transaction');
}
$streamName = $event->getParam('streamName');
$streamEvents = $event->getParam('streamEvents');
$this->adapter->appendTo($streamName, $streamEvents);
$this->recordedEvents->append($streamEvents);
$event->setName(__FUNCTION__ . '.post');
$this->getActionEventEmitter()->dispatch($event);
}