public function load(StreamName $streamName, $minVersion = null)
{
if (!isset($this->streams[$streamName->toString()])) {
return;
}
$streamEvents = $this->streams[$streamName->toString()];
if (null !== $minVersion) {
$filteredEvents = [];
foreach ($streamEvents as $streamEvent) {
if ($streamEvent->version() >= $minVersion) {
$filteredEvents[] = $streamEvent;
}
}
return new Stream($streamName, new \ArrayIterator($filteredEvents));
}
//Rewind before returning cached iterator as event store uses Iterator::valid()
//to test if stream contains events
$streamEvents->rewind();
return new Stream($streamName, $streamEvents);
}