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 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; }
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(); }
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); }
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; }
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); }
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); }
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 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 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; }
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; }
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; }
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(); }
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; }
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; }
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; }
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; }
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); }
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; }
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; }
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(); }
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(); }
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); }
public PositionTracker(PositionTagger positionTagger) { _positionTagger = positionTagger; }
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; }