public void SaveEventStream(EventStream eventStream) { if (eventStream.Removed) { Remove(eventStream.Id); return; } if (_eventStreams.ContainsKey(eventStream.Id)) { _eventStreams.Remove(eventStream.Id); } eventStream.AttemptSnapshot(100); _eventStreams.Add(eventStream.Id, new EventStream(eventStream.Id, eventStream.Version, eventStream.EventsAfter(0), eventStream.Snapshot)); if (!eventStream.HasSnapshot) { return; } if (_snapshots.ContainsKey(eventStream.Id)) { _snapshots.Remove(eventStream.Id); } _snapshots.Add(eventStream.Id, eventStream.Snapshot); }