public function replay(StreamName $streamName, DateTimeInterface $since = null, array $metadata = [])
{
if (!isset($this->streams[$streamName->toString()])) {
return new ArrayIterator();
}
$streamEvents = [];
foreach ($this->streams[$streamName->toString()] as $index => $streamEvent) {
if (null === $since && $this->matchMetadataWith($streamEvent, $metadata)) {
$streamEvents[] = $streamEvent;
} elseif ($streamEvent->createdAt()->format('U.u') >= $since->format('U.u') && $this->matchMetadataWith($streamEvent, $metadata)) {
$streamEvents[] = $streamEvent;
}
}
return new ArrayIterator($streamEvents);
}