Пример #1
0
 public ProjectionCheckpoint(
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionVersion projectionVersion, IPrincipal runAs, IProjectionCheckpointManager readyHandler,
     CheckpointTag from, PositionTagger positionTagger, CheckpointTag zero, int maxWriteBatchLength,
     ILogger logger = null)
 {
     if (readDispatcher == null) throw new ArgumentNullException("readDispatcher");
     if (writeDispatcher == null) throw new ArgumentNullException("writeDispatcher");
     if (readyHandler == null) throw new ArgumentNullException("readyHandler");
     if (positionTagger == null) throw new ArgumentNullException("positionTagger");
     if (zero == null) throw new ArgumentNullException("zero");
     if (from.CommitPosition <= from.PreparePosition) throw new ArgumentException("from");
     //NOTE: fromCommit can be equal fromPrepare on 0 position.  Is it possible anytime later? Ignoring for now.
     _readDispatcher = readDispatcher;
     _writeDispatcher = writeDispatcher;
     _projectionVersion = projectionVersion;
     _runAs = runAs;
     _readyHandler = readyHandler;
     _positionTagger = positionTagger;
     _zero = zero;
     _from = _last = from;
     _maxWriteBatchLength = maxWriteBatchLength;
     _logger = logger;
 }
Пример #2
0
        public NoopCheckpointManager(
            IPublisher publisher, Guid projectionCorrelationId, ProjectionConfig projectionConfig, string name,
            PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder)
        {
            if (publisher == null)
            {
                throw new ArgumentNullException("publisher");
            }
            if (projectionConfig == null)
            {
                throw new ArgumentNullException("projectionConfig");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (positionTagger == null)
            {
                throw new ArgumentNullException("positionTagger");
            }
            if (namingBuilder == null)
            {
                throw new ArgumentNullException("namingBuilder");
            }
            if (name == "")
            {
                throw new ArgumentException("name");
            }

            _lastProcessedEventPosition = new PositionTracker(positionTagger);

            _publisher = publisher;
            _projectionCorrelationId = projectionCorrelationId;
        }
Пример #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);
        }
Пример #4
0
 public DefaultCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, IResultEmitter resultEmitter, bool useCheckpoints,
     bool emitPartitionCheckpoints = false)
     : base(
         publisher, projectionCorrelationId, projectionConfig, name, positionTagger, namingBuilder, resultEmitter,
         useCheckpoints, emitPartitionCheckpoints)
 {
     if (readDispatcher == null)
     {
         throw new ArgumentNullException("readDispatcher");
     }
     if (writeDispatcher == null)
     {
         throw new ArgumentNullException("writeDispatcher");
     }
     _projectionVersion            = projectionVersion;
     _runAs                        = runAs;
     _readDispatcher               = readDispatcher;
     _writeDispatcher              = writeDispatcher;
     _positionTagger               = positionTagger;
     _projectionCheckpointStreamId = namingBuilder.MakeCheckpointStreamName();
     _zeroTag                      = positionTagger.MakeZeroCheckpointTag();
 }
 public ProjectionCheckpoint(
     IPublisher publisher,
     IODispatcher ioDispatcher,
     ProjectionVersion projectionVersion,
     IPrincipal runAs,
     IProjectionCheckpointManager readyHandler,
     CheckpointTag from,
     PositionTagger positionTagger,
     int maxWriteBatchLength,
     int maximumAllowedWritesInFlight,
     ILogger logger = null)
 {
     if (publisher == null) throw new ArgumentNullException("publisher");
     if (ioDispatcher == null) throw new ArgumentNullException("ioDispatcher");
     if (readyHandler == null) throw new ArgumentNullException("readyHandler");
     if (positionTagger == null) throw new ArgumentNullException("positionTagger");
     if (from.CommitPosition < from.PreparePosition) throw new ArgumentException("from");
     //NOTE: fromCommit can be equal fromPrepare on 0 position.  Is it possible anytime later? Ignoring for now.
     _maximumAllowedWritesInFlight = maximumAllowedWritesInFlight;
     _publisher = publisher;
     _ioDispatcher = ioDispatcher;
     _projectionVersion = projectionVersion;
     _runAs = runAs;
     _readyHandler = readyHandler;
     _positionTagger = positionTagger;
     _from = _last = from;
     _maxWriteBatchLength = maxWriteBatchLength;
     _logger = logger;
     _writeQueueIds = Enumerable.Range(0, _maximumAllowedWritesInFlight).Select(x => Guid.NewGuid()).ToArray();
 }
        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);
        }
Пример #7
0
        private ReaderStrategy(
            string tag,
            int phase,
            bool allStreams,
            string[] categories,
            string[] streams,
            bool allEvents,
            bool includeLinks,
            string[] events,
            bool includeStreamDeletedNotification,
            string catalogStream,
            int?processingLag,
            bool reorderEvents,
            IPrincipal runAs,
            ITimeProvider timeProvider)
        {
            _tag          = tag;
            _phase        = phase;
            _allStreams   = allStreams;
            _categories   = categories != null && categories.Length > 0 ? new HashSet <string>(categories) : null;
            _streams      = streams != null && streams.Length > 0 ? new HashSet <string>(streams) : null;
            _allEvents    = allEvents;
            _includeLinks = includeLinks;
            _events       = events != null && events.Length > 0 ? new HashSet <string>(events) : null;
            _includeStreamDeletedNotification = includeStreamDeletedNotification;
            _catalogStream = catalogStream;
            _processingLag = processingLag.GetValueOrDefault();
            _reorderEvents = reorderEvents;
            _runAs         = runAs;

            _eventFilter    = CreateEventFilter();
            _positionTagger = CreatePositionTagger();
            _timeProvider   = timeProvider;
        }
        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);
        }
        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);
        }
        protected CoreProjectionCheckpointManager(
            IPublisher publisher, Guid projectionCorrelationId, ProjectionConfig projectionConfig, string name,
            PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder, bool usePersistentCheckpoints,
            bool producesRunningResults)
        {
            if (publisher == null) throw new ArgumentNullException("publisher");
            if (projectionConfig == null) throw new ArgumentNullException("projectionConfig");
            if (name == null) throw new ArgumentNullException("name");
            if (positionTagger == null) throw new ArgumentNullException("positionTagger");
            if (namingBuilder == null) throw new ArgumentNullException("namingBuilder");
            if (name == "") throw new ArgumentException("name");

            _lastProcessedEventPosition = new PositionTracker(positionTagger);
            _zeroTag = positionTagger.MakeZeroCheckpointTag();

            _publisher = publisher;
            _projectionCorrelationId = projectionCorrelationId;
            _projectionConfig = projectionConfig;
            _logger = LogManager.GetLoggerFor<CoreProjectionCheckpointManager>();
            _namingBuilder = namingBuilder;
            _usePersistentCheckpoints = usePersistentCheckpoints;
            _producesRunningResults = producesRunningResults;
            _requestedCheckpointState = new PartitionState("", null, _zeroTag);
            _currentProjectionState = new PartitionState("", null, _zeroTag);
        }
 protected CoreProjectionCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name,
     PositionTagger positionTagger)
 {
     if (coreProjection == null) throw new ArgumentNullException("coreProjection");
     if (publisher == null) throw new ArgumentNullException("publisher");
     if (readDispatcher == null) throw new ArgumentNullException("readDispatcher");
     if (writeDispatcher == null) throw new ArgumentNullException("writeDispatcher");
     if (projectionConfig == null) throw new ArgumentNullException("projectionConfig");
     if (name == null) throw new ArgumentNullException("name");
     if (positionTagger == null) throw new ArgumentNullException("positionTagger");
     if (name == "") throw new ArgumentException("name");
     _lastProcessedEventPosition = new PositionTracker(positionTagger);
     _coreProjection = coreProjection;
     _publisher = publisher;
     _projectionCorrelationId = projectionCorrelationId;
     _readDispatcher = readDispatcher;
     _writeDispatcher = writeDispatcher;
     _projectionConfig = projectionConfig;
     _logger = LogManager.GetLoggerFor<CoreProjectionCheckpointManager>();
     _name = name;
     _positionTagger = positionTagger;
 }
Пример #12
0
 public ParallelQueryAllStreamsMasterReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider)
 {
     _runAs          = runAs;
     _timeProvider   = timeProvider;
     _eventFilter    = new StreamEventFilter("$streams", true, null);
     _positionTagger = new CatalogStreamPositionTagger(phase, "$streams");
 }
Пример #13
0
        public CheckpointTag AdjustBy(PositionTagger tagger, ProjectionVersion version)
        {
            if (SystemVersion == Projections.VERSION && Version.Version == version.Version
                && Version.ProjectionId == version.ProjectionId)
                return Tag;

            return tagger.AdjustTag(Tag);
        }
 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 PreparePositionTagger();
     _positionTracker = new PositionTracker(_tagger);
     var newTag = CheckpointTag.FromPreparePosition(50);
     _positionTracker.UpdateByCheckpointTagInitial(newTag);
 }
 public ParallelQueryAllStreamsMasterReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider)
 {
     _runAs = runAs;
     _timeProvider = timeProvider;
     _eventFilter = new StreamEventFilter("$streams", true, null);
     _positionTagger = new CatalogStreamPositionTagger(phase, "$streams");
 }
        public CheckpointTag AdjustBy(PositionTagger tagger, ProjectionVersion version)
        {
            if (SystemVersion == Projections.VERSION && Version.Version == version.Version
                && Version.ProjectionId == version.ProjectionId)
                return Tag;

            return tagger.AdjustTag(Tag);
        }
 protected CoreProjectionCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string projectionCheckpointStreamId, string name,
     PositionTagger positionTagger)
 {
     if (coreProjection == null)
     {
         throw new ArgumentNullException("coreProjection");
     }
     if (publisher == null)
     {
         throw new ArgumentNullException("publisher");
     }
     if (readDispatcher == null)
     {
         throw new ArgumentNullException("readDispatcher");
     }
     if (writeDispatcher == null)
     {
         throw new ArgumentNullException("writeDispatcher");
     }
     if (projectionConfig == null)
     {
         throw new ArgumentNullException("projectionConfig");
     }
     if (projectionCheckpointStreamId == null)
     {
         throw new ArgumentNullException("projectionCheckpointStreamId");
     }
     if (projectionCheckpointStreamId == "")
     {
         throw new ArgumentException("projectionCheckpointStreamId");
     }
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (name == "")
     {
         throw new ArgumentException("name");
     }
     _lastProcessedEventPosition = new PositionTracker(positionTagger);
     _coreProjection             = coreProjection;
     _publisher = publisher;
     _projectionCorrelationId = projectionCorrelationId;
     _readDispatcher          = readDispatcher;
     _writeDispatcher         = writeDispatcher;
     _projectionConfig        = projectionConfig;
     _logger = LogManager.GetLoggerFor <CoreProjectionCheckpointManager>();
     _name   = name;
 }
 public ParallelQueryMasterReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider, string catalogStream)
 {
     _runAs          = runAs;
     _timeProvider   = timeProvider;
     _catalogStream  = catalogStream;
     _eventFilter    = new StreamEventFilter(catalogStream, true, null);
     _positionTagger = new CatalogStreamPositionTagger(phase, catalogStream);
 }
 public ParallelQueryMasterReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider, string catalogStream)
 {
     _runAs = runAs;
     _timeProvider = timeProvider;
     _catalogStream = catalogStream;
     _eventFilter = new StreamEventFilter(catalogStream, true, null);
     _positionTagger = new CatalogStreamPositionTagger(phase, catalogStream);
 }
 public void When()
 {
     // given
     _tagger = new TransactionFilePositionTagger();
     _positionTracker = new PositionTracker(_tagger);
     _positionTracker.Update(
         new ProjectionMessage.Projections.CommittedEventReceived(
             Guid.NewGuid(), new EventPosition(100, 50), "stream", 1, false,
             new Event(Guid.NewGuid(), "eventtype", false, new byte[0], new byte[0])));
 }
 public ExternallyFedReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider, long limitingCommitPosition)
 {
     _phase          = phase;
     _runAs          = runAs;
     _timeProvider   = timeProvider;
     _eventFilter    = new BypassingEventFilter();
     _positionTagger = new PreTaggedPositionTagger(
         phase, CheckpointTag.FromByStreamPosition(phase, "", -1, null, -1, limitingCommitPosition));
 }
 public ExternallyFedReaderStrategy(
     int phase, IPrincipal runAs, ITimeProvider timeProvider, long limitingCommitPosition)
 {
     _phase = phase;
     _runAs = runAs;
     _timeProvider = timeProvider;
     _eventFilter = new BypassingEventFilter();
     _positionTagger = new PreTaggedPositionTagger(
         phase, CheckpointTag.FromByStreamPosition(phase, "", -1, null, -1, limitingCommitPosition));
 }
Пример #24
0
 public EmittedStream(
     string streamId, ProjectionVersion projectionVersion, IPrincipal writeAs, PositionTagger positionTagger,
     CheckpointTag zeroPosition, CheckpointTag from,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     IEmittedStreamContainer readyHandler, int maxWriteBatchLength, ILogger logger = null,
     bool noCheckpoints = false)
 {
     if (streamId == null)
     {
         throw new ArgumentNullException("streamId");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (zeroPosition == null)
     {
         throw new ArgumentNullException("zeroPosition");
     }
     if (@from == null)
     {
         throw new ArgumentNullException("from");
     }
     if (readDispatcher == null)
     {
         throw new ArgumentNullException("readDispatcher");
     }
     if (writeDispatcher == null)
     {
         throw new ArgumentNullException("writeDispatcher");
     }
     if (readyHandler == null)
     {
         throw new ArgumentNullException("readyHandler");
     }
     if (streamId == "")
     {
         throw new ArgumentException("streamId");
     }
     _streamId          = streamId;
     _projectionVersion = projectionVersion;
     _writeAs           = writeAs;
     _positionTagger    = positionTagger;
     _zeroPosition      = zeroPosition;
     _from = @from;
     _lastQueuedEventPosition = null;
     _readDispatcher          = readDispatcher;
     _writeDispatcher         = writeDispatcher;
     _readyHandler            = readyHandler;
     _maxWriteBatchLength     = maxWriteBatchLength;
     _logger        = logger;
     _noCheckpoints = noCheckpoints;
 }
 public MultiStreamCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name,
     PositionTagger positionTagger, string projectionStateUpdatesStreamId)
     : base(coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher, projectionConfig, name, positionTagger)
 {
     _projectionStateUpdatesStreamId = projectionStateUpdatesStreamId;
 }
 public MultiStreamMultiOutputCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     IODispatcher ioDispatcher, ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, bool useCheckpoints, bool producesRunningResults, bool definesFold,
     CoreProjectionCheckpointWriter coreProjectionCheckpointWriter)
     : base(
         publisher, projectionCorrelationId, projectionVersion, runAs, ioDispatcher, projectionConfig, name,
         positionTagger, namingBuilder, useCheckpoints, producesRunningResults, definesFold,
         coreProjectionCheckpointWriter)
 {
     _positionTagger = positionTagger;
 }
Пример #27
0
 public MultiStreamMultiOutputCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     IODispatcher ioDispatcher, ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, bool usePersistentCheckpoints, bool producesRunningResults, bool definesFold,
     CoreProjectionCheckpointWriter coreProjectionCheckpointWriter)
     : base(
         publisher, projectionCorrelationId, projectionVersion, runAs, ioDispatcher, projectionConfig, name,
         positionTagger, namingBuilder, usePersistentCheckpoints, producesRunningResults, definesFold,
         coreProjectionCheckpointWriter)
 {
     _positionTagger = positionTagger;
 }
Пример #28
0
 public MultiStreamCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name,
     PositionTagger positionTagger, string projectionStateUpdatesStreamId)
     : base(
         coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher, projectionConfig, name, positionTagger)
 {
     _projectionStateUpdatesStreamId = projectionStateUpdatesStreamId;
 }
 public DefaultCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string projectionCheckpointStreamId, string name,
     PositionTagger positionTagger)
     : base(coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher, projectionConfig, name, positionTagger)
 {
     if (projectionCheckpointStreamId == null) throw new ArgumentNullException("projectionCheckpointStreamId");
     if (projectionCheckpointStreamId == "") throw new ArgumentException("projectionCheckpointStreamId");
     _projectionCheckpointStreamId = projectionCheckpointStreamId;
 }
Пример #30
0
 public ExternallyFedReaderStrategy(
     string tag,
     int phase,
     ITimeProvider timeProvider,
     long limitingCommitPosition)
 {
     _tag            = tag;
     _timeProvider   = timeProvider;
     _eventFilter    = new BypassingEventFilter();
     _positionTagger = new PreTaggedPositionTagger(
         phase,
         CheckpointTag.FromByStreamPosition(phase, "", -1, null, -1, limitingCommitPosition));
 }
 public ExternallyFedReaderStrategy(
     string tag,
     int phase,
     ITimeProvider timeProvider,
     long limitingCommitPosition)
 {
     _tag = tag;
     _timeProvider = timeProvider;
     _eventFilter = new BypassingEventFilter();
     _positionTagger = new PreTaggedPositionTagger(
         phase,
         CheckpointTag.FromByStreamPosition(phase, "", -1, null, -1, limitingCommitPosition));
 }
 public DefaultCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name,
     PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder, bool useCheckpoints,
     bool emitStateUpdated, bool emitPartitionCheckpoints = false)
     : base(
         coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher, projectionConfig,
         name, positionTagger, namingBuilder, useCheckpoints, emitStateUpdated, emitPartitionCheckpoints)
 {
     _projectionCheckpointStreamId = namingBuilder.MakeCheckpointStreamName();
 }
Пример #33
0
 public EmittedStream(
     string streamId, WriterConfiguration writerConfiguration, ProjectionVersion projectionVersion,
     PositionTagger positionTagger, CheckpointTag fromCheckpointPosition, IPublisher publisher,
     IODispatcher ioDispatcher,
     IEmittedStreamContainer readyHandler, bool noCheckpoints = false)
 {
     if (string.IsNullOrEmpty(streamId))
     {
         throw new ArgumentNullException("streamId");
     }
     if (writerConfiguration == null)
     {
         throw new ArgumentNullException("writerConfiguration");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (fromCheckpointPosition == null)
     {
         throw new ArgumentNullException("fromCheckpointPosition");
     }
     if (publisher == null)
     {
         throw new ArgumentNullException("publisher");
     }
     if (ioDispatcher == null)
     {
         throw new ArgumentNullException("ioDispatcher");
     }
     if (readyHandler == null)
     {
         throw new ArgumentNullException("readyHandler");
     }
     _streamId                = streamId;
     _metadataStreamId        = SystemStreams.MetastreamOf(streamId);
     _writerConfiguration     = writerConfiguration;
     _projectionVersion       = projectionVersion;
     _writeAs                 = writerConfiguration.WriteAs;
     _positionTagger          = positionTagger;
     _zeroPosition            = positionTagger.MakeZeroCheckpointTag();
     _fromCheckpointPosition  = fromCheckpointPosition;
     _lastQueuedEventPosition = null;
     _publisher               = publisher;
     _ioDispatcher            = ioDispatcher;
     _readyHandler            = readyHandler;
     _maxWriteBatchLength     = writerConfiguration.MaxWriteBatchLength;
     _logger        = writerConfiguration.Logger;
     _noCheckpoints = noCheckpoints;
 }
Пример #34
0
        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>();
        }
        protected CoreProjectionCheckpointManager(
            IPublisher publisher, Guid projectionCorrelationId, ProjectionConfig projectionConfig, string name,
            PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder, IResultEmitter resultEmitter,
            bool useCheckpoints, bool emitPartitionCheckpoints)
        {
            if (publisher == null)
            {
                throw new ArgumentNullException("publisher");
            }
            if (projectionConfig == null)
            {
                throw new ArgumentNullException("projectionConfig");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (positionTagger == null)
            {
                throw new ArgumentNullException("positionTagger");
            }
            if (namingBuilder == null)
            {
                throw new ArgumentNullException("namingBuilder");
            }
            if (resultEmitter == null)
            {
                throw new ArgumentNullException("resultEmitter");
            }
            if (name == "")
            {
                throw new ArgumentException("name");
            }

            _lastProcessedEventPosition = new PositionTracker(positionTagger);
            _zeroTag = positionTagger.MakeZeroCheckpointTag();

            _publisher = publisher;
            _projectionCorrelationId = projectionCorrelationId;
            _projectionConfig        = projectionConfig;
            _logger                   = LogManager.GetLoggerFor <CoreProjectionCheckpointManager>();
            _name                     = name;
            _namingBuilder            = namingBuilder;
            _resultEmitter            = resultEmitter;
            _useCheckpoints           = useCheckpoints;
            _emitPartitionCheckpoints = emitPartitionCheckpoints;
            _requestedCheckpointState = new PartitionState("", null, _zeroTag);
            _currentProjectionState   = new PartitionState("", null, _zeroTag);
        }
 public MultiStreamMultiOutputCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, IResultEmitter resultEmitter, bool useCheckpoints,
     bool emitPartitionCheckpoints = false)
     : base(
         publisher, projectionCorrelationId, projectionVersion, runAs, readDispatcher, writeDispatcher,
         projectionConfig, name, positionTagger, namingBuilder, resultEmitter, useCheckpoints,
         emitPartitionCheckpoints)
 {
     _positionTagger = positionTagger;
 }
Пример #37
0
        private CheckpointStrategy(
            bool allStreams, HashSet<string> categories, HashSet<string> streams, bool allEvents, HashSet<string> events,
            bool byStream)
        {
            _allStreams = allStreams;
            _categories = categories;
            _streams = streams;
            _allEvents = allEvents;
            _events = events;
            _byStream = byStream;

            _eventFilter = CreateEventFilter();
            _positionTagger = CreatePositionTagger();
            _statePartitionSelector = CreateStatePartitionSelector();
        }
        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 MultiStreamMultiOutputCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, IResultEmitter resultEmitter, bool useCheckpoints,
     bool emitPartitionCheckpoints = false)
     : base(
         publisher, projectionCorrelationId, projectionVersion, runAs, readDispatcher, writeDispatcher,
         projectionConfig, name, positionTagger, namingBuilder, resultEmitter, useCheckpoints,
         emitPartitionCheckpoints)
 {
     _positionTagger = positionTagger;
 }
Пример #40
0
        private CheckpointStrategy(
            bool allStreams, HashSet <string> categories, HashSet <string> streams, bool allEvents, HashSet <string> events,
            bool byStream)
        {
            _allStreams = allStreams;
            _categories = categories;
            _streams    = streams;
            _allEvents  = allEvents;
            _events     = events;
            _byStream   = byStream;

            _eventFilter            = CreateEventFilter();
            _positionTagger         = CreatePositionTagger();
            _statePartitionSelector = CreateStatePartitionSelector();
        }
        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 NoopCheckpointManager(
            IPublisher publisher, Guid projectionCorrelationId, ProjectionConfig projectionConfig, string name,
            PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder)
        {
            if (publisher == null) throw new ArgumentNullException("publisher");
            if (projectionConfig == null) throw new ArgumentNullException("projectionConfig");
            if (name == null) throw new ArgumentNullException("name");
            if (positionTagger == null) throw new ArgumentNullException("positionTagger");
            if (namingBuilder == null) throw new ArgumentNullException("namingBuilder");
            if (name == "") throw new ArgumentException("name");

            _lastProcessedEventPosition = new PositionTracker(positionTagger);

            _publisher = publisher;
            _projectionCorrelationId = projectionCorrelationId;
        }
Пример #43
0
 public EmittedStream(
     string streamId, WriterConfiguration writerConfiguration, ProjectionVersion projectionVersion,
     PositionTagger positionTagger, CheckpointTag @from, IODispatcher ioDispatcher,
     IEmittedStreamContainer readyHandler, bool noCheckpoints = false)
 {
     if (streamId == null)
     {
         throw new ArgumentNullException("streamId");
     }
     if (writerConfiguration == null)
     {
         throw new ArgumentNullException("writerConfiguration");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (@from == null)
     {
         throw new ArgumentNullException("from");
     }
     if (ioDispatcher == null)
     {
         throw new ArgumentNullException("ioDispatcher");
     }
     if (readyHandler == null)
     {
         throw new ArgumentNullException("readyHandler");
     }
     if (streamId == "")
     {
         throw new ArgumentException("streamId");
     }
     _streamId            = streamId;
     _writerConfiguration = writerConfiguration;
     _projectionVersion   = projectionVersion;
     _writeAs             = writerConfiguration.WriteAs;
     _positionTagger      = positionTagger;
     _zeroPosition        = positionTagger.MakeZeroCheckpointTag();
     _from = @from;
     _lastQueuedEventPosition = null;
     _ioDispatcher            = ioDispatcher;
     _readyHandler            = readyHandler;
     _maxWriteBatchLength     = writerConfiguration.MaxWriteBatchLength;
     _logger        = writerConfiguration.Logger;
     _noCheckpoints = noCheckpoints;
 }
        public void When()
        {
            // given
            var tagger = new TransactionFilePositionTagger();
            var positionTracker = new PositionTracker(tagger);

            positionTracker.Update(
                new ProjectionMessage.Projections.CommittedEventReceived(
                    Guid.NewGuid(), new EventPosition(100, 50), "stream", 1, false,
                    new Event(Guid.NewGuid(), "eventtype", false, new byte[0], new byte[0])));
            _tag = positionTracker.LastTag;
            _tagger = new TransactionFilePositionTagger();
            _positionTracker = new PositionTracker(_tagger);
            // when 

            _positionTracker.UpdateByCheckpointTag(_tag);
        }
Пример #45
0
        private ReaderStrategy(
            bool allStreams, HashSet <string> categories, HashSet <string> streams, bool allEvents, bool includeLinks,
            HashSet <string> events, int processingLag, bool reorderEvents, IPrincipal runAs, ITimeProvider timeProvider)
        {
            _allStreams    = allStreams;
            _categories    = categories;
            _streams       = streams;
            _allEvents     = allEvents;
            _includeLinks  = includeLinks;
            _events        = events;
            _processingLag = processingLag;
            _reorderEvents = reorderEvents;
            _runAs         = runAs;

            _eventFilter    = CreateEventFilter();
            _positionTagger = CreatePositionTagger();
            _timeProvider   = timeProvider;
        }
Пример #46
0
 public ProjectionCheckpoint(
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionVersion projectionVersion, IPrincipal runAs, IProjectionCheckpointManager readyHandler,
     CheckpointTag from, PositionTagger positionTagger, CheckpointTag zero, int maxWriteBatchLength,
     ILogger logger = null)
 {
     if (readDispatcher == null)
     {
         throw new ArgumentNullException("readDispatcher");
     }
     if (writeDispatcher == null)
     {
         throw new ArgumentNullException("writeDispatcher");
     }
     if (readyHandler == null)
     {
         throw new ArgumentNullException("readyHandler");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (zero == null)
     {
         throw new ArgumentNullException("zero");
     }
     if (from.CommitPosition <= from.PreparePosition)
     {
         throw new ArgumentException("from");
     }
     //NOTE: fromCommit can be equal fromPrepare on 0 position.  Is it possible anytime later? Ignoring for now.
     _readDispatcher    = readDispatcher;
     _writeDispatcher   = writeDispatcher;
     _projectionVersion = projectionVersion;
     _runAs             = runAs;
     _readyHandler      = readyHandler;
     _positionTagger    = positionTagger;
     _zero = zero;
     _from = _last = from;
     _maxWriteBatchLength = maxWriteBatchLength;
     _logger = logger;
 }
 public DefaultCheckpointManager(
     ICoreProjection coreProjection, IPublisher publisher, Guid projectionCorrelationId,
     RequestResponseDispatcher
     <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string projectionCheckpointStreamId, string name,
     PositionTagger positionTagger)
     : base(
         coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher, projectionConfig, name, positionTagger)
 {
     if (projectionCheckpointStreamId == null)
     {
         throw new ArgumentNullException("projectionCheckpointStreamId");
     }
     if (projectionCheckpointStreamId == "")
     {
         throw new ArgumentException("projectionCheckpointStreamId");
     }
     _projectionCheckpointStreamId = projectionCheckpointStreamId;
 }
 public DefaultCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     IODispatcher ioDispatcher, ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, bool usePersistentCheckpoints, bool producesRunningResults, bool definesFold,
     CoreProjectionCheckpointWriter coreProjectionCheckpointWriter)
     : base(
         publisher, projectionCorrelationId, projectionConfig, name, positionTagger, namingBuilder,
         usePersistentCheckpoints)
 {
     if (ioDispatcher == null)
     {
         throw new ArgumentNullException("ioDispatcher");
     }
     _projectionVersion = projectionVersion;
     _runAs             = runAs;
     _ioDispatcher      = ioDispatcher;
     _positionTagger    = positionTagger;
     _coreProjectionCheckpointWriter = coreProjectionCheckpointWriter;
     _zeroTag = positionTagger.MakeZeroCheckpointTag();
 }
 public ProjectionCheckpoint(
     IODispatcher ioDispatcher, ProjectionVersion projectionVersion, IPrincipal runAs,
     IProjectionCheckpointManager readyHandler, CheckpointTag from, PositionTagger positionTagger,
     CheckpointTag zero, int maxWriteBatchLength, ILogger logger = null)
 {
     if (ioDispatcher == null) throw new ArgumentNullException("ioDispatcher");
     if (readyHandler == null) throw new ArgumentNullException("readyHandler");
     if (positionTagger == null) throw new ArgumentNullException("positionTagger");
     if (zero == null) throw new ArgumentNullException("zero");
     if (from.CommitPosition < from.PreparePosition) throw new ArgumentException("from");
     //NOTE: fromCommit can be equal fromPrepare on 0 position.  Is it possible anytime later? Ignoring for now.
     _ioDispatcher = ioDispatcher;
     _projectionVersion = projectionVersion;
     _runAs = runAs;
     _readyHandler = readyHandler;
     _positionTagger = positionTagger;
     _zero = zero;
     _from = _last = from;
     _maxWriteBatchLength = maxWriteBatchLength;
     _logger = logger;
 }
Пример #50
0
        private CheckpointStrategy(
            bool allStreams, HashSet<string> categories, HashSet<string> streams, bool allEvents, HashSet<string> events,
            bool byStream, bool byCustomPartitions, bool useEventIndexes, bool reorderEvents, int processingLag,
            bool emitStateUpdated, bool useCheckpoints)
        {
            _allStreams = allStreams;
            _categories = categories;
            _streams = streams;
            _allEvents = allEvents;
            _events = events;
            _byStream = byStream;
            _byCustomPartitions = byCustomPartitions;
            _useEventIndexes = useEventIndexes;
            _reorderEvents = reorderEvents;
            _processingLag = processingLag;
            _emitStateUpdated = emitStateUpdated;
            _useCheckpoints = useCheckpoints;

            _eventFilter = CreateEventFilter();
            _positionTagger = CreatePositionTagger();
        }
Пример #51
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);
        }
 public DefaultCheckpointManager(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionVersion projectionVersion, IPrincipal runAs,
     RequestResponseDispatcher
         <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
     RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
     ProjectionConfig projectionConfig, string name, PositionTagger positionTagger,
     ProjectionNamesBuilder namingBuilder, IResultEmitter resultEmitter, bool useCheckpoints,
     bool emitPartitionCheckpoints = false)
     : base(
         publisher, projectionCorrelationId, projectionConfig, name, positionTagger, namingBuilder, resultEmitter,
         useCheckpoints, emitPartitionCheckpoints)
 {
     if (readDispatcher == null) throw new ArgumentNullException("readDispatcher");
     if (writeDispatcher == null) throw new ArgumentNullException("writeDispatcher");
     _projectionVersion = projectionVersion;
     _runAs = runAs;
     _readDispatcher = readDispatcher;
     _writeDispatcher = writeDispatcher;
     _positionTagger = positionTagger;
     _projectionCheckpointStreamId = namingBuilder.MakeCheckpointStreamName();
     _zeroTag = positionTagger.MakeZeroCheckpointTag();
 }
Пример #53
0
 public ProjectionCheckpoint(
     IODispatcher ioDispatcher,
     ProjectionVersion projectionVersion,
     IPrincipal runAs,
     IProjectionCheckpointManager readyHandler,
     CheckpointTag from,
     PositionTagger positionTagger,
     int maxWriteBatchLength,
     ILogger logger = null)
 {
     if (ioDispatcher == null)
     {
         throw new ArgumentNullException("ioDispatcher");
     }
     if (readyHandler == null)
     {
         throw new ArgumentNullException("readyHandler");
     }
     if (positionTagger == null)
     {
         throw new ArgumentNullException("positionTagger");
     }
     if (from.CommitPosition < from.PreparePosition)
     {
         throw new ArgumentException("from");
     }
     //NOTE: fromCommit can be equal fromPrepare on 0 position.  Is it possible anytime later? Ignoring for now.
     _ioDispatcher      = ioDispatcher;
     _projectionVersion = projectionVersion;
     _runAs             = runAs;
     _readyHandler      = readyHandler;
     _positionTagger    = positionTagger;
     _from = _last = from;
     _maxWriteBatchLength = maxWriteBatchLength;
     _logger = logger;
 }
 public void when()
 {
     _tagger = new TransactionFilePositionTagger(0);
     _positionTracker = new PositionTracker(_tagger);
 }
Пример #55
0
 public PositionTracker(PositionTagger positionTagger)
 {
     _positionTagger = positionTagger;
 }
Пример #56
0
 public PositionTracker(PositionTagger positionTagger)
 {
     _positionTagger = positionTagger;
 }
Пример #57
0
        private ReaderStrategy(
            int phase, bool allStreams, string[] categories, string[] streams, bool allEvents, bool includeLinks,
            string[] events, string catalogStream, int? processingLag, bool reorderEvents, IPrincipal runAs,
            ITimeProvider timeProvider)
        {
            _phase = phase;
            _allStreams = allStreams;
            _categories = categories != null && categories.Length > 0 ? new HashSet<string>(categories) : null;
            _streams = streams != null && streams.Length > 0 ? new HashSet<string>(streams) : null;
            _allEvents = allEvents;
            _includeLinks = includeLinks;
            _events = events != null && events.Length > 0 ? new HashSet<string>(events) : null;
            _catalogStream = catalogStream;
            _processingLag = processingLag.GetValueOrDefault();
            _reorderEvents = reorderEvents;
            _runAs = runAs;

            _eventFilter = CreateEventFilter();
            _positionTagger = CreatePositionTagger();
            _timeProvider = timeProvider;
        }