Ejemplo n.º 1
0
        private CommittedEventStream Read(IEnumerable<Commit> commits, bool applySnapshot)
        {
            var streamId = Guid.Empty;
            Commit last = null;
            long sequence = 0;
            long revision = 0;
            object snapshot = null;
            ICollection<object> events = new LinkedList<object>();

            foreach (var commit in commits)
            {
                streamId = commit.StreamId;
                last = commit;
                sequence = commit.CommitSequence;
                revision = commit.StreamRevision;

                snapshot = commit.Snapshot ?? snapshot;
                events.AddEventsOrClearOnSnapshot(commit, applySnapshot);

                this.commitIdentifiers.Add(commit.CommitId);
            }

            if (last != null)
                this.streamHeads[streamId] = last;

            snapshot = applySnapshot ? snapshot : null;
            return new CommittedEventStream(streamId, revision, sequence, events.ToArray(), snapshot);
        }