private IEvent[] DeserializeEvents(Guid streamId, EventRecord[] records, IRestoredMemento snapshot) { var events = new List <IEvent>(records.Length); if (snapshot != null) { events.Add(snapshot); } var start = snapshot == null ? 0 : 1; for (var i = start; i < records.Length; i++) { var record = records[i]; events.Add(DeserializeEvent(streamId, record.ContractName, record.Version, record.Payload)); } return(events.ToArray()); }
private static int CalculateCurrentVersion(int fromVersion, IEvent[] events, IRestoredMemento snapshot) { return(snapshot?.Version + (events.Length - 1) + (fromVersion - 1) ?? events.Length + (fromVersion - 1)); }