protected ReaderSubscriptionBase(
            IPublisher publisher, Guid subscriptionId, CheckpointTag @from, IReaderStrategy readerStrategy,
            long?checkpointUnhandledBytesThreshold, int?checkpointProcessedEventsThreshold, bool stopOnEof,
            int?stopAfterNEvents)
        {
            if (publisher == null)
            {
                throw new ArgumentNullException("publisher");
            }
            if (readerStrategy == null)
            {
                throw new ArgumentNullException("readerStrategy");
            }
            _publisher      = publisher;
            _readerStrategy = readerStrategy;
            _checkpointUnhandledBytesThreshold  = checkpointUnhandledBytesThreshold;
            _checkpointProcessedEventsThreshold = checkpointProcessedEventsThreshold;
            _stopOnEof        = stopOnEof;
            _stopAfterNEvents = stopAfterNEvents;
            _subscriptionId   = subscriptionId;
            _lastPassedOrCheckpointedEventPosition = null;

            _eventFilter = readerStrategy.EventFilter;

            _positionTagger  = readerStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(@from);
        }
        protected ProjectionSubscriptionBase(
            Guid projectionCorrelationId, Guid subscriptionId, CheckpointTag from,
            IHandle<ProjectionSubscriptionMessage.CommittedEventReceived> eventHandler,
            IHandle<ProjectionSubscriptionMessage.CheckpointSuggested> checkpointHandler,
            IHandle<ProjectionSubscriptionMessage.ProgressChanged> progressHandler,
            IHandle<ProjectionSubscriptionMessage.EofReached> eofHandler,
            CheckpointStrategy checkpointStrategy, long? checkpointUnhandledBytesThreshold, bool stopOnEof)
        {
            if (eventHandler == null) throw new ArgumentNullException("eventHandler");
            if (checkpointHandler == null) throw new ArgumentNullException("checkpointHandler");
            if (progressHandler == null) throw new ArgumentNullException("progressHandler");
            if (eofHandler == null) throw new ArgumentNullException("eofHandler");
            if (checkpointStrategy == null) throw new ArgumentNullException("checkpointStrategy");
            _eventHandler = eventHandler;
            _checkpointHandler = checkpointHandler;
            _progressHandler = progressHandler;
            _eofHandler = eofHandler;
            _checkpointStrategy = checkpointStrategy;
            _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
            _stopOnEof = stopOnEof;
            _projectionCorrelationId = projectionCorrelationId;
            _subscriptionId = subscriptionId;
            _lastPassedOrCheckpointedEventPosition = null;

            _eventFilter = checkpointStrategy.EventFilter;

            _positionTagger = checkpointStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(@from);
        }
Example #3
0
        public ProjectionSubscription(
            Guid projectionCorrelationId, CheckpointTag from,
            IHandle <ProjectionMessage.Projections.CommittedEventReceived> eventHandler,
            IHandle <ProjectionMessage.Projections.CheckpointSuggested> checkpointHandler,
            CheckpointStrategy checkpointStrategy, long?checkpointUnhandledBytesThreshold)
        {
            if (eventHandler == null)
            {
                throw new ArgumentNullException("eventHandler");
            }
            if (checkpointHandler == null)
            {
                throw new ArgumentNullException("checkpointHandler");
            }
            if (checkpointStrategy == null)
            {
                throw new ArgumentNullException("checkpointStrategy");
            }
            _eventHandler       = eventHandler;
            _checkpointHandler  = checkpointHandler;
            _checkpointStrategy = checkpointStrategy;
            _checkpointUnhandledBytesThreshold     = checkpointUnhandledBytesThreshold;
            _projectionCorrelationId               = projectionCorrelationId;
            _lastPassedOrCheckpointedEventPosition = from.Position;

            _eventFilter = checkpointStrategy.EventFilter;

            _positionTagger  = checkpointStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(from);
        }
        protected ReaderSubscriptionBase(
            IPublisher publisher,
            Guid subscriptionId,
            CheckpointTag @from,
            IReaderStrategy readerStrategy,
            ITimeProvider timeProvider,
            long? checkpointUnhandledBytesThreshold,
            int? checkpointProcessedEventsThreshold,
            bool stopOnEof,
            int? stopAfterNEvents)
        {
            if (publisher == null) throw new ArgumentNullException("publisher");
            if (readerStrategy == null) throw new ArgumentNullException("readerStrategy");
            if (timeProvider == null) throw new ArgumentNullException("timeProvider");
            if (checkpointProcessedEventsThreshold > 0 && stopAfterNEvents > 0)
                throw new ArgumentException("checkpointProcessedEventsThreshold > 0 && stopAfterNEvents > 0");

            _publisher = publisher;
            _readerStrategy = readerStrategy;
            _timeProvider = timeProvider;
            _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
            _checkpointProcessedEventsThreshold = checkpointProcessedEventsThreshold;
            _stopOnEof = stopOnEof;
            _stopAfterNEvents = stopAfterNEvents;
            _subscriptionId = subscriptionId;
            _lastPassedOrCheckpointedEventPosition = null;

            _eventFilter = readerStrategy.EventFilter;

            _positionTagger = readerStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(@from);
        }
        public void When()
        {
            _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"});
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag());
        }
 public void When()
 {
     // given
     _tagger = new PreparePositionTagger();
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromPreparePosition(50);
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
 }
        public void When()
        {
            _tagger = new StreamPositionTagger("stream1");
            _positionTracker = new PositionTracker(_tagger);
            // when

            _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag());
        }
 public void When()
 {
     // given
     _tagger = new StreamPositionTagger("stream1");
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromStreamPosition("stream1", 1, 50);
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
 }
        public void When()
        {
            _tagger = new MultiStreamPositionTagger(0, new [] {"stream1", "stream2"});
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag());
        }
 public void When()
 {
     // given
     _tagger = new TransactionFilePositionTagger(0);
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromPosition(0, 100, 50);
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
 }
 public void When()
 {
     // given
     _tagger = new MultiStreamPositionTagger(0, new []{"stream1", "stream2"});
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromStreamPositions(0, new Dictionary<string, int>{{"stream1", 1}, {"stream2", 2}});
     var newTag2 = CheckpointTag.FromStreamPositions(0, new Dictionary<string, int> { { "stream1", 1 }, { "stream2", 3 } });
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
     _positionTracker.UpdateByCheckpointTagForward(newTag2);
 }
 public void When()
 {
     // given
     _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"});
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}});
     var newTag2 = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(20, 15), new Dictionary<string, int> {{"type1", 1}, {"type2", 3}});
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
     _positionTracker.UpdateByCheckpointTagForward(newTag2);
 }
Example #13
0
 public void Start(CheckpointTag checkpointTag, PartitionState rootPartitionState)
 {
     if (_started)
     {
         throw new InvalidOperationException("Already started");
     }
     _started = true;
     _lastProcessedEventPosition.UpdateByCheckpointTagInitial(checkpointTag);
     _lastProcessedEventProgress      = -1;
     _lastCompletedCheckpointPosition = checkpointTag;
 }
        protected ReaderSubscriptionBase(
            IPublisher publisher,
            Guid subscriptionId,
            CheckpointTag @from,
            IReaderStrategy readerStrategy,
            ITimeProvider timeProvider,
            long?checkpointUnhandledBytesThreshold,
            int?checkpointProcessedEventsThreshold,
            int checkpointAfterMs,
            bool stopOnEof,
            int?stopAfterNEvents,
            bool enableContentTypeValidation)
        {
            if (publisher == null)
            {
                throw new ArgumentNullException("publisher");
            }
            if (readerStrategy == null)
            {
                throw new ArgumentNullException("readerStrategy");
            }
            if (timeProvider == null)
            {
                throw new ArgumentNullException("timeProvider");
            }
            if (checkpointProcessedEventsThreshold > 0 && stopAfterNEvents > 0)
            {
                throw new ArgumentException("checkpointProcessedEventsThreshold > 0 && stopAfterNEvents > 0");
            }

            _publisher      = publisher;
            _readerStrategy = readerStrategy;
            _timeProvider   = timeProvider;
            _checkpointUnhandledBytesThreshold  = checkpointUnhandledBytesThreshold;
            _checkpointProcessedEventsThreshold = checkpointProcessedEventsThreshold;
            _checkpointAfter  = TimeSpan.FromMilliseconds(checkpointAfterMs);
            _stopOnEof        = stopOnEof;
            _stopAfterNEvents = stopAfterNEvents;
            _subscriptionId   = subscriptionId;
            _lastPassedOrCheckpointedEventPosition = null;

            _eventFilter = readerStrategy.EventFilter;

            _positionTagger  = readerStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(@from);
            _lastCheckpointTag           = _positionTracker.LastTag;
            _enableContentTypeValidation = enableContentTypeValidation;
            _logger = Serilog.Log.ForContext <ReaderSubscriptionBase>();
        }
        public void When()
        {
            // given
            var tagger = new MultiStreamPositionTagger(new []{"stream1", "stream2"});
            var tracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromStreamPositions(new Dictionary<string, int>{{"stream1", 1}, {"stream2", 2}});
            tracker.UpdateByCheckpointTagInitial(newTag);
            _tag = tracker.LastTag;
            _tagger = new MultiStreamPositionTagger(new []{"stream1", "stream2"});
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tag);
        }
Example #16
0
 public virtual void Start(CheckpointTag checkpointTag)
 {
     Contract.Requires(_currentCheckpoint == null);
     if (_started)
     {
         throw new InvalidOperationException("Already started");
     }
     _started = true;
     _lastProcessedEventPosition.UpdateByCheckpointTagInitial(checkpointTag);
     _lastProcessedEventProgress      = -1;
     _lastCompletedCheckpointPosition = checkpointTag;
     _requestedCheckpointPosition     = null;
     _currentCheckpoint = CreateProjectionCheckpoint(_lastProcessedEventPosition.LastTag);
     _currentCheckpoint.Start();
 }
        public void When()
        {
            // given
            var tagger = new PreparePositionTagger(0);
            var positionTracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromPreparePosition(0, 50);
            positionTracker.UpdateByCheckpointTagInitial(newTag);
            _tag = positionTracker.LastTag;
            _tagger = new PreparePositionTagger(0);
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tag);
        }
        public void When()
        {
            // given
            var tagger = new StreamPositionTagger("stream1");
            var tracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromStreamPosition("stream1", 1);
            tracker.UpdateByCheckpointTagInitial(newTag);
            _tag = tracker.LastTag;
            _tagger = new StreamPositionTagger("stream1");
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tag);
        }
        public void When()
        {
            // given
            var tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"});
            var tracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}});

            tracker.UpdateByCheckpointTagInitial(newTag);
            _tag = tracker.LastTag;
            _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"});
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTagInitial(_tag);
        }
        public void When()
        {
            // given
            var tagger = new TransactionFilePositionTagger();
            var positionTracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromPosition(100, 50);
            positionTracker.UpdateByCheckpointTagInitial(newTag);
            _tag = positionTracker.LastTag;
            _tagger = new TransactionFilePositionTagger();
            _positionTracker = new PositionTracker(_tagger);
            _positionTracker.UpdateByCheckpointTagInitial(_tag);
            // when

            _positionTracker.Initialize();
        }
 public void Start(CheckpointTag checkpointTag)
 {
     if (!_stateLoaded)
     {
         throw new InvalidOperationException("State is not loaded");
     }
     if (_started)
     {
         throw new InvalidOperationException("Already started");
     }
     _started = true;
     _lastProcessedEventPosition.UpdateByCheckpointTagInitial(checkpointTag);
     _lastCompletedCheckpointPosition = checkpointTag;
     _requestedCheckpointPosition     = null;
     _currentCheckpoint = new ProjectionCheckpoint(
         _publisher, this, _lastProcessedEventPosition.LastTag, _projectionConfig.MaxWriteBatchLength, _logger);
     _currentCheckpoint.Start();
 }
Example #22
0
        public ProjectionSubscription(
            Guid projectionCorrelationId, CheckpointTag from,
            IHandle<ProjectionMessage.Projections.CommittedEventReceived> eventHandler,
            IHandle<ProjectionMessage.Projections.CheckpointSuggested> checkpointHandler,
            CheckpointStrategy checkpointStrategy, long? checkpointUnhandledBytesThreshold)
        {
            if (eventHandler == null) throw new ArgumentNullException("eventHandler");
            if (checkpointHandler == null) throw new ArgumentNullException("checkpointHandler");
            if (checkpointStrategy == null) throw new ArgumentNullException("checkpointStrategy");
            _eventHandler = eventHandler;
            _checkpointHandler = checkpointHandler;
            _checkpointStrategy = checkpointStrategy;
            _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
            _projectionCorrelationId = projectionCorrelationId;
            _lastPassedOrCheckpointedEventPosition = from.Position;

            _eventFilter = checkpointStrategy.EventFilter;

            _positionTagger = checkpointStrategy.PositionTagger;
            _positionTracker = new PositionTracker(_positionTagger);
            _positionTracker.UpdateByCheckpointTagInitial(from);
        }