Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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;
        }