コード例 #1
0
 protected override IProjectionProcessingPhase[] CreateProjectionProcessingPhases(
     IPublisher publisher, Guid projectionCorrelationId, ProjectionNamesBuilder namingBuilder,
     PartitionStateCache partitionStateCache, CoreProjection coreProjection, IODispatcher ioDispatcher,
     IProjectionProcessingPhase firstPhase)
 {
     return(new [] { firstPhase });
 }
コード例 #2
0
        public override sealed IProjectionProcessingPhase[] CreateProcessingPhases(
            IPublisher publisher, Guid projectionCorrelationId, PartitionStateCache partitionStateCache,
            Action updateStatistics, CoreProjection coreProjection, ProjectionNamesBuilder namingBuilder,
            ITimeProvider timeProvider, IODispatcher ioDispatcher,
            CoreProjectionCheckpointWriter coreProjectionCheckpointWriter)
        {
            var definesFold = _sourceDefinition.DefinesFold;

            var readerStrategy = CreateReaderStrategy(timeProvider);

            var zeroCheckpointTag = readerStrategy.PositionTagger.MakeZeroCheckpointTag();

            var checkpointManager = CreateCheckpointManager(
                projectionCorrelationId, publisher, ioDispatcher, namingBuilder, coreProjectionCheckpointWriter,
                definesFold, readerStrategy);


            var resultWriter = CreateFirstPhaseResultWriter(
                checkpointManager as IEmittedEventWriter, zeroCheckpointTag, namingBuilder);

            var firstPhase = CreateFirstProcessingPhase(
                publisher, projectionCorrelationId, partitionStateCache, updateStatistics, coreProjection,
                _subscriptionDispatcher, zeroCheckpointTag, checkpointManager, readerStrategy, resultWriter);

            return(CreateProjectionProcessingPhases(
                       publisher, projectionCorrelationId, namingBuilder, partitionStateCache, coreProjection, ioDispatcher,
                       firstPhase));
        }
コード例 #3
0
        protected override IProjectionProcessingPhase[] CreateProjectionProcessingPhases(
            IPublisher publisher, Guid projectionCorrelationId, ProjectionNamesBuilder namingBuilder,
            PartitionStateCache partitionStateCache, CoreProjection coreProjection, IODispatcher ioDispatcher,
            IProjectionProcessingPhase firstPhase)
        {
            var coreProjectionCheckpointWriter =
                new CoreProjectionCheckpointWriter(
                    namingBuilder.MakeCheckpointStreamName(), ioDispatcher, _projectionVersion, _name);
            var checkpointManager2 = new DefaultCheckpointManager(
                publisher, projectionCorrelationId, _projectionVersion, _projectionConfig.RunAs, ioDispatcher,
                _projectionConfig, _name, new PhasePositionTagger(1), namingBuilder, GetUseCheckpoints(), false,
                _sourceDefinition.DefinesFold, coreProjectionCheckpointWriter);

            IProjectionProcessingPhase writeResultsPhase;

            if (GetProducesRunningResults() ||
                !string.IsNullOrEmpty(_sourceDefinition.CatalogStream) && _sourceDefinition.ByStreams)
            {
                writeResultsPhase = new WriteQueryEofProjectionProcessingPhase(
                    1, namingBuilder.GetResultStreamName(), coreProjection, partitionStateCache, checkpointManager2,
                    checkpointManager2);
            }
            else
            {
                writeResultsPhase = new WriteQueryResultProjectionProcessingPhase(
                    1, namingBuilder.GetResultStreamName(), coreProjection, partitionStateCache, checkpointManager2,
                    checkpointManager2);
            }

            return(new[] { firstPhase, writeResultsPhase });
        }
コード例 #4
0
 protected override IProjectionProcessingPhase CreateFirstProcessingPhase(
     IPublisher publisher,
     IPublisher inputQueue,
     Guid projectionCorrelationId,
     PartitionStateCache partitionStateCache,
     Action updateStatistics,
     CoreProjection coreProjection,
     ReaderSubscriptionDispatcher subscriptionDispatcher,
     CheckpointTag zeroCheckpointTag,
     ICoreProjectionCheckpointManager checkpointManager,
     IReaderStrategy readerStrategy,
     IResultWriter resultWriter,
     IEmittedStreamsTracker emittedStreamsTracker)
 {
     return(new ParallelQueryMasterProjectionProcessingPhase(
                coreProjection,
                projectionCorrelationId,
                publisher,
                inputQueue,
                _projectionConfig,
                updateStatistics,
                _stateHandler,
                partitionStateCache,
                _name,
                _logger,
                zeroCheckpointTag,
                checkpointManager,
                subscriptionDispatcher,
                readerStrategy,
                resultWriter,
                _projectionConfig.CheckpointsEnabled,
                this.GetStopOnEof(),
                _spoolProcessingResponseDispatcher,
                emittedStreamsTracker));
 }
コード例 #5
0
 public CommittedEventWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CommittedEventReceived message, string partition)
     : base(projection, message.EventStreamId)
 {
     _message   = message;
     _partition = partition;
 }
コード例 #6
0
 public ProgressWorkItem(
     CoreProjection projection, ICoreProjectionCheckpointManager checkpointManager, float progress)
     : base(projection, null)
 {
     _checkpointManager = checkpointManager;
     _progress          = progress;
 }
コード例 #7
0
 public CheckpointSuggestedWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CheckpointSuggested message,
     CoreProjectionCheckpointManager checkpointManager)
     : base(projection, "") // checkpoints are serialized based on string.empty token stream name
 {
     _message           = message;
     _checkpointManager = checkpointManager;
 }
コード例 #8
0
 public CheckpointSuggestedWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CheckpointSuggested message, CheckpointTag tag)
     : base("")
 {
     _projection = projection;
     _message    = message;
     _tag        = tag;
 }
コード例 #9
0
 public CommittedEventWorkItem(
     CoreProjection projection, EventReaderSubscriptionMessage.CommittedEventReceived message,
     StatePartitionSelector statePartitionSelector)
     : base(projection, null)
 {
     _statePartitionSelector = statePartitionSelector;
     _message = message;
 }
コード例 #10
0
 protected abstract IProjectionProcessingPhase[] CreateProjectionProcessingPhases(
     IPublisher publisher,
     IPublisher inputQueue,
     Guid projectionCorrelationId,
     ProjectionNamesBuilder namingBuilder,
     PartitionStateCache partitionStateCache,
     CoreProjection coreProjection,
     IODispatcher ioDispatcher,
     IProjectionProcessingPhase firstPhase);
コード例 #11
0
 public CheckpointSuggestedWorkItem(
     CoreProjection projection, EventReaderSubscriptionMessage.CheckpointSuggested message,
     ICoreProjectionCheckpointManager checkpointManager)
     : base(projection)
 {
     _projection        = projection;
     _message           = message;
     _checkpointManager = checkpointManager;
 }
コード例 #12
0
 public CommittedEventWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CommittedEventReceived message,
     string partition, CheckpointTag tag)
     : base(message.EventStreamId)
 {
     _projection = projection;
     _message    = message;
     _partition  = partition;
     _tag        = tag;
 }
コード例 #13
0
 public abstract IProjectionProcessingPhase[] CreateProcessingPhases(
     IPublisher publisher,
     IPublisher inputQueue,
     Guid projectionCorrelationId,
     PartitionStateCache partitionStateCache,
     Action updateStatistics,
     CoreProjection coreProjection,
     ProjectionNamesBuilder namingBuilder,
     ITimeProvider timeProvider,
     IODispatcher ioDispatcher,
     CoreProjectionCheckpointWriter coreProjectionCheckpointWriter);
コード例 #14
0
 protected abstract IProjectionProcessingPhase CreateFirstProcessingPhase(
     IPublisher publisher,
     IPublisher inputQueue,
     Guid projectionCorrelationId,
     PartitionStateCache partitionStateCache,
     Action updateStatistics,
     CoreProjection coreProjection,
     ReaderSubscriptionDispatcher subscriptionDispatcher,
     CheckpointTag zeroCheckpointTag,
     ICoreProjectionCheckpointManager checkpointManager,
     IReaderStrategy readerStrategy,
     IResultWriter resultWriter);
コード例 #15
0
        public EventProcessingProjectionProcessingPhase(
            CoreProjection coreProjection,
            Guid projectionCorrelationId,
            IPublisher publisher,
            IPublisher inputQueue,
            ProjectionConfig projectionConfig,
            Action updateStatistics,
            IProjectionStateHandler projectionStateHandler,
            PartitionStateCache partitionStateCache,
            bool definesStateTransform,
            string projectionName,
            ILogger logger,
            CheckpointTag zeroCheckpointTag,
            ICoreProjectionCheckpointManager coreProjectionCheckpointManager,
            StatePartitionSelector statePartitionSelector,
            ReaderSubscriptionDispatcher subscriptionDispatcher,
            IReaderStrategy readerStrategy,
            IResultWriter resultWriter,
            bool useCheckpoints,
            bool stopOnEof,
            bool isBiState,
            bool orderedPartitionProcessing,
            IEmittedStreamsTracker emittedStreamsTracker,
            bool enableContentTypeValidation)
            : base(
                publisher,
                inputQueue,
                coreProjection,
                projectionCorrelationId,
                coreProjectionCheckpointManager,
                projectionConfig,
                projectionName,
                logger,
                zeroCheckpointTag,
                partitionStateCache,
                resultWriter,
                updateStatistics,
                subscriptionDispatcher,
                readerStrategy,
                useCheckpoints,
                stopOnEof,
                orderedPartitionProcessing,
                isBiState,
                emittedStreamsTracker,
                enableContentTypeValidation)
        {
            _projectionStateHandler = projectionStateHandler;
            _definesStateTransform  = definesStateTransform;
            _statePartitionSelector = statePartitionSelector;
            _isBiState = isBiState;

            _stopwatch = new Stopwatch();
        }
コード例 #16
0
        protected override IProjectionProcessingPhase CreateFirstProcessingPhase(
            IPublisher publisher, Guid projectionCorrelationId, PartitionStateCache partitionStateCache,
            Action updateStatistics, CoreProjection coreProjection, ReaderSubscriptionDispatcher subscriptionDispatcher,
            CheckpointTag zeroCheckpointTag, ICoreProjectionCheckpointManager checkpointManager, IReaderStrategy readerStrategy, IResultWriter resultWriter)
        {
            var statePartitionSelector = CreateStatePartitionSelector(
                _stateHandler, _sourceDefinition.ByCustomPartitions, _sourceDefinition.ByStreams);

            return(new EventProcessingProjectionProcessingPhase(
                       coreProjection, projectionCorrelationId, publisher, _projectionConfig, updateStatistics,
                       _stateHandler, partitionStateCache, _sourceDefinition.DefinesStateTransform, _name, _logger,
                       zeroCheckpointTag, checkpointManager, statePartitionSelector, subscriptionDispatcher, readerStrategy,
                       resultWriter, _projectionConfig.CheckpointsEnabled, this.GetStopOnEof()));
        }
コード例 #17
0
 public ParallelQueryMasterProjectionProcessingPhase(
     CoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
     ProjectionConfig projectionConfig, Action updateStatistics, PartitionStateCache partitionStateCache,
     string name, ILogger logger, CheckpointTag zeroCheckpointTag,
     ICoreProjectionCheckpointManager checkpointManager, ReaderSubscriptionDispatcher subscriptionDispatcher,
     IReaderStrategy readerStrategy, IResultWriter resultWriter, bool checkpointsEnabled, bool stopOnEof,
     SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher)
     : base(
         publisher, coreProjection, projectionCorrelationId, checkpointManager, projectionConfig, name, logger,
         zeroCheckpointTag, partitionStateCache, resultWriter, updateStatistics, subscriptionDispatcher,
         readerStrategy, checkpointsEnabled, stopOnEof)
 {
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
 }
コード例 #18
0
 public void Handle(ProjectionMessage.CoreService.Management.Create message)
 {
     try
     {
         //TODO: factory method can throw!
         IProjectionStateHandler stateHandler = message.HandlerFactory();
         // constructor can fail if wrong source defintion
         //TODO: revise it
         var projection = new CoreProjection(message.Name, message.CorrelationId, _publisher, stateHandler, message.Config, _readDispatcher, _writeDispatcher, _logger);
         _projections.Add(message.CorrelationId, projection);
     }
     catch (Exception ex)
     {
         message.Envelope.ReplyWith(new ProjectionMessage.Projections.StatusReport.Faulted(message.CorrelationId, ex.Message));
     }
 }
コード例 #19
0
 public ParallelQueryMasterProjectionProcessingPhase(
     CoreProjection coreProjection,
     Guid projectionCorrelationId,
     IPublisher publisher,
     IPublisher inputQueue,
     ProjectionConfig projectionConfig,
     Action updateStatistics,
     IProjectionStateHandler stateHandler,
     PartitionStateCache partitionStateCache,
     string name,
     ILogger logger,
     CheckpointTag zeroCheckpointTag,
     ICoreProjectionCheckpointManager checkpointManager,
     ReaderSubscriptionDispatcher subscriptionDispatcher,
     IReaderStrategy readerStrategy,
     IResultWriter resultWriter,
     bool checkpointsEnabled,
     bool stopOnEof,
     SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher,
     IEmittedStreamsTracker emittedStreamsTracker)
     : base(
         publisher,
         inputQueue,
         coreProjection,
         projectionCorrelationId,
         checkpointManager,
         projectionConfig,
         name,
         logger,
         zeroCheckpointTag,
         partitionStateCache,
         resultWriter,
         updateStatistics,
         subscriptionDispatcher,
         readerStrategy,
         checkpointsEnabled,
         stopOnEof,
         orderedPartitionProcessing: true,
         isBiState: false,
         emittedStreamsTracker: emittedStreamsTracker)
 {
     _stateHandler = stateHandler;
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
     _spoolProcessingWorkItems          = new Dictionary <Guid, SpoolStreamProcessingWorkItem>();
 }
コード例 #20
0
        public EventProcessingProjectionProcessingPhase(
            CoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            ProjectionConfig projectionConfig, Action updateStatistics, IProjectionStateHandler projectionStateHandler,
            PartitionStateCache partitionStateCache, bool definesStateTransform, string projectionName, ILogger logger,
            CheckpointTag zeroCheckpointTag, ICoreProjectionCheckpointManager coreProjectionCheckpointManager,
            StatePartitionSelector statePartitionSelector, ReaderSubscriptionDispatcher subscriptionDispatcher,
            IReaderStrategy readerStrategy, IResultWriter resultWriter, bool useCheckpoints, bool stopOnEof)
            : base(
                publisher, coreProjection, projectionCorrelationId, coreProjectionCheckpointManager, projectionConfig,
                projectionName, logger, zeroCheckpointTag, partitionStateCache, resultWriter, updateStatistics,
                subscriptionDispatcher, readerStrategy, useCheckpoints, stopOnEof)
        {
            _projectionStateHandler = projectionStateHandler;
            _definesStateTransform  = definesStateTransform;
            _statePartitionSelector = statePartitionSelector;

            _stopwatch = new Stopwatch();
        }
コード例 #21
0
        protected override IProjectionProcessingPhase[] CreateProjectionProcessingPhases(
            IPublisher publisher, IPublisher inputQueue, Guid projectionCorrelationId,
            ProjectionNamesBuilder namingBuilder,
            PartitionStateCache partitionStateCache, CoreProjection coreProjection, IODispatcher ioDispatcher,
            IProjectionProcessingPhase firstPhase)
        {
            var coreProjectionCheckpointWriter =
                new CoreProjectionCheckpointWriter(
                    namingBuilder.MakeCheckpointStreamName(), ioDispatcher, _projectionVersion, _name);
            var checkpointManager2 = new DefaultCheckpointManager(
                publisher, projectionCorrelationId, _projectionVersion, SystemAccount.Principal, ioDispatcher,
                _projectionConfig, _name, new PhasePositionTagger(1), namingBuilder, GetUseCheckpoints(), false,
                _sourceDefinition.DefinesFold, coreProjectionCheckpointWriter);

            IProjectionProcessingPhase writeResultsPhase;

            if (GetProducesRunningResults())
            {
                writeResultsPhase = new WriteQueryEofProjectionProcessingPhase(
                    publisher,
                    1,
                    namingBuilder.GetResultStreamName(),
                    coreProjection,
                    partitionStateCache,
                    checkpointManager2,
                    checkpointManager2,
                    firstPhase.EmittedStreamsTracker);
            }
            else
            {
                writeResultsPhase = new WriteQueryResultProjectionProcessingPhase(
                    publisher,
                    1,
                    namingBuilder.GetResultStreamName(),
                    coreProjection,
                    partitionStateCache,
                    checkpointManager2,
                    checkpointManager2,
                    firstPhase.EmittedStreamsTracker);
            }

            return(new[] { firstPhase, writeResultsPhase });
        }
コード例 #22
0
        protected override IProjectionProcessingPhase CreateFirstProcessingPhase(
            IPublisher publisher,
            IPublisher inputQueue,
            Guid projectionCorrelationId,
            PartitionStateCache partitionStateCache,
            Action updateStatistics,
            CoreProjection coreProjection,
            ReaderSubscriptionDispatcher subscriptionDispatcher,
            CheckpointTag zeroCheckpointTag,
            ICoreProjectionCheckpointManager checkpointManager,
            IReaderStrategy readerStrategy,
            IResultWriter resultWriter,
            IEmittedStreamsTracker emittedStreamsTracker)
        {
            var statePartitionSelector = CreateStatePartitionSelector();

            var orderedPartitionProcessing = _sourceDefinition.ByStreams && _sourceDefinition.IsBiState;

            return(new EventProcessingProjectionProcessingPhase(
                       coreProjection,
                       projectionCorrelationId,
                       publisher,
                       inputQueue,
                       _projectionConfig,
                       updateStatistics,
                       _stateHandler,
                       partitionStateCache,
                       _sourceDefinition.DefinesStateTransform,
                       _name,
                       _logger,
                       zeroCheckpointTag,
                       checkpointManager,
                       statePartitionSelector,
                       subscriptionDispatcher,
                       readerStrategy,
                       resultWriter,
                       _projectionConfig.CheckpointsEnabled,
                       this.GetStopOnEof(),
                       _sourceDefinition.IsBiState,
                       orderedPartitionProcessing: orderedPartitionProcessing,
                       emittedStreamsTracker: emittedStreamsTracker,
                       enableContentTypeValidation: _enableContentTypeValidation));
        }
コード例 #23
0
 public void Handle(CoreProjectionManagementMessage.CreatePrepared message)
 {
     try
     {
         //TODO: factory method can throw!
         // constructor can fail if wrong source defintion
         ProjectionSourceDefinition sourceDefinition;
         var projection = CoreProjection.CreatePrepared(
             message.Name, message.Version, message.ProjectionId, _publisher, message.SourceDefinition, message.Config,
             _readDispatcher, _writeDispatcher, _subscriptionDispatcher, _logger, _timeProvider, out sourceDefinition);
         _projections.Add(message.ProjectionId, projection);
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Prepared(message.ProjectionId, sourceDefinition));
     }
     catch (Exception ex)
     {
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Faulted(message.ProjectionId, ex.Message));
     }
 }
コード例 #24
0
 protected GetDataWorkItemBase(
     IEnvelope envelope, Guid correlationId, Guid projectionId, CoreProjection projection,
     PartitionStateCache partitionStateCache, string partition)
     : base(projection, null)
 {
     if (envelope == null)
     {
         throw new ArgumentNullException("envelope");
     }
     if (partitionStateCache == null)
     {
         throw new ArgumentNullException("partitionStateCache");
     }
     if (partition == null)
     {
         throw new ArgumentNullException("partition");
     }
     _partition           = partition;
     _envelope            = envelope;
     _correlationId       = correlationId;
     _projectionId        = projectionId;
     _partitionStateCache = partitionStateCache;
 }
コード例 #25
0
 public void Handle(CoreProjectionManagementMessage.CreateAndPrepare message)
 {
     try
     {
         //TODO: factory method can throw!
         IProjectionStateHandler stateHandler = message.HandlerFactory();
         // constructor can fail if wrong source defintion
         //TODO: revise it
         var sourceDefintionRecorder = new SourceDefintionRecorder();
         stateHandler.ConfigureSourceProcessingStrategy(sourceDefintionRecorder);
         var sourceDefintion = sourceDefintionRecorder.Build();
         var projection      = new CoreProjection(
             message.Name, message.CorrelationId, _publisher, stateHandler, message.Config, _readDispatcher,
             _writeDispatcher, _logger);
         _projections.Add(message.CorrelationId, projection);
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Prepared(message.CorrelationId, sourceDefintion));
     }
     catch (Exception ex)
     {
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Faulted(message.CorrelationId, ex.Message));
     }
 }
コード例 #26
0
 public GetStateWorkItem(IEnvelope envelope,
                         Guid projectionId,
                         CoreProjection projection,
                         PartitionStateCache partitionStateCache,
                         string partition)
     : base(projection, string.Empty)
 {
     if (envelope == null)
     {
         throw new ArgumentNullException("envelope");
     }
     if (partitionStateCache == null)
     {
         throw new ArgumentNullException("partitionStateCache");
     }
     if (partition == null)
     {
         throw new ArgumentNullException("partition");
     }
     _partition           = partition;
     _envelope            = envelope;
     _projectionId        = projectionId;
     _partitionStateCache = partitionStateCache;
 }
コード例 #27
0
 public NotAuthorizedWorkItem(CoreProjection projection)
     : base(projection, null)
 {
 }
コード例 #28
0
 public GetResultWorkItem(
     IEnvelope envelope, Guid correlationId, Guid projectionId, CoreProjection projection,
     PartitionStateCache partitionStateCache, string partition)
     : base(envelope, correlationId, projectionId, projection, partitionStateCache, partition)
 {
 }
コード例 #29
0
ファイル: WorkItem.cs プロジェクト: eleks/EventStore
 protected WorkItem(CoreProjection projection, string stream)
     : base(stream)
 {
     _projection = projection;
     _lastStage  = 2;
 }
コード例 #30
0
ファイル: WorkItem.cs プロジェクト: tone81/EventStore
 protected WorkItem(CoreProjection projection, object initialCorrelationId)
     : base(initialCorrelationId)
 {
     Projection = projection;
     _lastStage = 5;
 }