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,
            ProjectionNamesBuilder namingBuilder, bool useCheckpoints, bool emitStateUpdated,
            bool emitPartitionCheckpoints)
        {
            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 (namingBuilder == null) throw new ArgumentNullException("namingBuilder");
            if (name == "") throw new ArgumentException("name");

            if (emitPartitionCheckpoints && emitStateUpdated)
                throw new InvalidOperationException("EmitPartitionCheckpoints && EmitStateUpdated cannot be both set");
            _lastProcessedEventPosition = new PositionTracker(positionTagger);
            _coreProjection = coreProjection;
            _publisher = publisher;
            _projectionCorrelationId = projectionCorrelationId;
            _readDispatcher = readDispatcher;
            _writeDispatcher = writeDispatcher;
            _projectionConfig = projectionConfig;
            _logger = LogManager.GetLoggerFor<CoreProjectionCheckpointManager>();
            _name = name;
            _positionTagger = positionTagger;
            _namingBuilder = namingBuilder;
            _useCheckpoints = useCheckpoints;
            _emitStateUpdated = emitStateUpdated;
            _emitPartitionCheckpoints = emitPartitionCheckpoints;
        }
        public ICoreProjectionCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
            <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted>
            requestResponseDispatcher,
            RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> responseDispatcher,
            ProjectionConfig projectionConfig, string name, string stateUpdatesStreamId)
        {
            if (_allStreams && _useEventIndexes && _events != null && _events.Count > 1)
            {
                string projectionStateUpdatesStreamId = stateUpdatesStreamId;

                return(new MultiStreamCheckpointManager(
                           coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                           projectionConfig, name, PositionTagger, projectionStateUpdatesStreamId));
            }
            else if (_streams != null && _streams.Count > 1)
            {
                string projectionStateUpdatesStreamId = stateUpdatesStreamId;

                return(new MultiStreamCheckpointManager(
                           coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                           projectionConfig, name, PositionTagger, projectionStateUpdatesStreamId));
            }
            else
            {
                string projectionCheckpointStreamId = CoreProjection.ProjectionsStreamPrefix + name
                                                      + CoreProjection.ProjectionCheckpointStreamSuffix;

                return(new DefaultCheckpointManager(
                           coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                           projectionConfig, projectionCheckpointStreamId, name, PositionTagger));
            }
        }
 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;
 }
 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;
 }
Example #5
0
 public Subscribe(
     Guid correlationId, ICoreProjection subscriber, CheckpointTag from,
     CheckpointStrategy checkpointStrategy, long checkpointUnhandledBytesThreshold)
 {
     _correlationId      = correlationId;
     _subscriber         = subscriber;
     _fromPosition       = @from;
     _checkpointStrategy = checkpointStrategy;
     _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
 }
 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;
 }
Example #7
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 Subscribe(
     Guid correlationId, Guid subscriptionId, ICoreProjection subscriber, CheckpointTag from,
     CheckpointStrategy checkpointStrategy, long checkpointUnhandledBytesThreshold, bool stopOnEof = false)
 {
     _correlationId = correlationId;
     _subscriptionId = subscriptionId;
     _subscriber = subscriber;
     _fromPosition = @from;
     _checkpointStrategy = checkpointStrategy;
     _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
     _stopOnEof = stopOnEof;
 }
 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(
     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();
 }
Example #11
0
        public CoreProjectionDefaultCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
            <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted>
            requestResponseDispatcher,
            RequestResponseDispatcher <ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> responseDispatcher,
            ProjectionConfig projectionConfig, string name)
        {
            string projectionCheckpointStreamId = CoreProjection.ProjectionsStreamPrefix + name
                                                  + CoreProjection.ProjectionCheckpointStreamSuffix;

            return(new CoreProjectionDefaultCheckpointManager(
                       coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                       projectionConfig, projectionCheckpointStreamId, name, PositionTagger));
        }
 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 ICoreProjectionCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
                <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted>
                requestResponseDispatcher,
            RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> responseDispatcher,
            ProjectionConfig projectionConfig, string name, string stateUpdatesStreamId)
        {
            if (_allStreams && _useEventIndexes && _events != null && _events.Count > 1)
            {
                string projectionStateUpdatesStreamId = stateUpdatesStreamId;

                return new MultiStreamCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                    projectionConfig, name, PositionTagger, projectionStateUpdatesStreamId);
            }
            else if (_streams != null && _streams.Count > 1)
            {
                string projectionStateUpdatesStreamId = stateUpdatesStreamId;

                return new MultiStreamCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                    projectionConfig, name, PositionTagger, projectionStateUpdatesStreamId);
            }
            else
            {
                string projectionCheckpointStreamId = CoreProjection.ProjectionsStreamPrefix + name
                                                      + CoreProjection.ProjectionCheckpointStreamSuffix;

                return new DefaultCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                    projectionConfig, projectionCheckpointStreamId, name, PositionTagger);
            }
        }
        public ICoreProjectionCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
                <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
            RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
            ProjectionConfig projectionConfig, string name, ProjectionNamesBuilder namingBuilder)
        {
            var emitPartitionCheckpoints = UseCheckpoints && !EmitStateUpdated && (_byCustomPartitions || _byStream);

            if (_allStreams && _useEventIndexes && _events != null && _events.Count > 1)
            {
                return new MultiStreamMultiOutputCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
            else if (_streams != null && _streams.Count > 1)
            {
                return new MultiStreamMultiOutputCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
            else
            {
                return new DefaultCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
        }
 public IProjectionSubscription CreateProjectionSubscription(
     CheckpointTag fromCheckpointTag, Guid projectionCorrelationId, Guid subscriptionId,
     ICoreProjection projection, long checkpointUnhandledBytesThreshold, bool stopOnEof)
 {
     if (_reorderEvents)
         return new EventReorderingProjectionSubscription(
             projectionCorrelationId, subscriptionId, fromCheckpointTag, projection, projection, projection,
             projection, this, checkpointUnhandledBytesThreshold, _processingLag, stopOnEof);
     else
         return new ProjectionSubscription(
             projectionCorrelationId, subscriptionId, fromCheckpointTag, projection, projection, projection,
             projection, this, checkpointUnhandledBytesThreshold, stopOnEof);
 }
        public ICoreProjectionCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
                <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted> readDispatcher,
            RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> writeDispatcher,
            ProjectionConfig projectionConfig, string name, ProjectionNamesBuilder namingBuilder)
        {
            var emitAny = projectionConfig.EmitEventEnabled;
            var emitPartitionCheckpoints = UseCheckpoints && !EmitStateUpdated && (_byCustomPartitions || _byStream);

            //NOTE: not emitting one-time/transient projections are always handled by default checkpoint manager
            // as they don't depend on stable event order
            if (emitAny && _allStreams && _useEventIndexes && _events != null && _events.Count > 1)
            {
                return new MultiStreamMultiOutputCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
            else if (emitAny && _streams != null && _streams.Count > 1)
            {
                return new MultiStreamMultiOutputCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
            else
            {
                return new DefaultCheckpointManager(
                    coreProjection, publisher, projectionCorrelationId, readDispatcher, writeDispatcher,
                    projectionConfig, name, PositionTagger, namingBuilder, UseCheckpoints, EmitStateUpdated,
                    emitPartitionCheckpoints);
            }
        }
 public Subscribe(
     Guid correlationId, Guid subscriptionId, ICoreProjection subscriber, CheckpointTag from,
     CheckpointStrategy checkpointStrategy, long checkpointUnhandledBytesThreshold, bool stopOnEof = false)
 {
     if (subscriber == null) throw new ArgumentNullException("subscriber");
     if (@from == null) throw new ArgumentNullException("from");
     if (checkpointStrategy == null) throw new ArgumentNullException("checkpointStrategy");
     _correlationId = correlationId;
     _subscriptionId = subscriptionId;
     _subscriber = subscriber;
     _fromPosition = @from;
     _checkpointStrategy = checkpointStrategy;
     _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
     _stopOnEof = stopOnEof;
 }
Example #18
0
        public CoreProjectionDefaultCheckpointManager CreateCheckpointManager(
            ICoreProjection coreProjection, Guid projectionCorrelationId, IPublisher publisher,
            RequestResponseDispatcher
                <ClientMessage.ReadStreamEventsBackward, ClientMessage.ReadStreamEventsBackwardCompleted>
                requestResponseDispatcher,
            RequestResponseDispatcher<ClientMessage.WriteEvents, ClientMessage.WriteEventsCompleted> responseDispatcher,
            ProjectionConfig projectionConfig, string name)
        {
            string projectionCheckpointStreamId = CoreProjection.ProjectionsStreamPrefix + name
                                                  + CoreProjection.ProjectionCheckpointStreamSuffix;

            return new CoreProjectionDefaultCheckpointManager(
                coreProjection, publisher, projectionCorrelationId, requestResponseDispatcher, responseDispatcher,
                projectionConfig, projectionCheckpointStreamId, name, PositionTagger);
        }
 public Subscribe(
     Guid correlationId, ICoreProjection subscriber, CheckpointTag from,
     CheckpointStrategy checkpointStrategy, long checkpointUnhandledBytesThreshold)
 {
     _correlationId = correlationId;
     _subscriber = subscriber;
     _fromPosition = @from;
     _checkpointStrategy = checkpointStrategy;
     _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold;
 }