public static SingleEventTypeEventStream ShouldBeInOrder(this SingleEventTypeEventStream eventStream) { Ensure.IsNotNull(nameof(eventStream), eventStream); eventStream.Any().ShouldBeTrue(); CommittedEventEnvelope prev = null; foreach (var evt in eventStream) { evt.CompareTo(prev).ShouldEqual(1); prev = evt; } return(eventStream); }
/// <summary> /// Instructs the Processor to Catch up by processing events that have been committed since the last processed event /// </summary> public virtual void CatchUp() { using (var repository = _getOffsetRepository()) { LastVersionProcessed = repository.Get(ProcessorId); } var unprocessedEventsFetcher = _getUnprocessedEventsFetcher(); SingleEventTypeEventStream eventStream = unprocessedEventsFetcher.GetUnprocessedEvents(Key.Event.Id, LastVersionProcessed) ?? new SingleEventTypeEventStream(null); do { if (!eventStream.IsEmpty) { eventStream.ForEach(e => ProcessEvent(e)); eventStream = unprocessedEventsFetcher.GetUnprocessedEvents(Key.Event.Id, LastVersionProcessed); } }while(!eventStream.IsEmpty); HasCaughtUp = true; }