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 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); }
public void When() { // given _tagger = new PreparePositionTagger(); _positionTracker = new PositionTracker(_tagger); var newTag = CheckpointTag.FromPreparePosition(50); _positionTracker.UpdateByCheckpointTagInitial(newTag); }
public void When() { _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag()); }
public void When() { _tagger = new StreamPositionTagger("stream1"); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag()); }
public void When() { // given _tagger = new StreamPositionTagger("stream1"); _positionTracker = new PositionTracker(_tagger); var newTag = CheckpointTag.FromStreamPosition("stream1", 1, 50); _positionTracker.UpdateByCheckpointTagInitial(newTag); }
public void When() { _tagger = new MultiStreamPositionTagger(0, new [] {"stream1", "stream2"}); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag()); }
public void When() { // given _tagger = new TransactionFilePositionTagger(0); _positionTracker = new PositionTracker(_tagger); var newTag = CheckpointTag.FromPosition(0, 100, 50); _positionTracker.UpdateByCheckpointTagInitial(newTag); }
public void When() { _tagger = new StreamPositionTagger("stream1"); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateToZero(); }
public void When() { // given _tagger = new MultiStreamPositionTagger(0, new []{"stream1", "stream2"}); _positionTracker = new PositionTracker(_tagger); var newTag = CheckpointTag.FromStreamPositions(0, new Dictionary<string, int>{{"stream1", 1}, {"stream2", 2}}); var newTag2 = CheckpointTag.FromStreamPositions(0, new Dictionary<string, int> { { "stream1", 1 }, { "stream2", 3 } }); _positionTracker.UpdateByCheckpointTagInitial(newTag); _positionTracker.UpdateByCheckpointTagForward(newTag2); }
public void When() { // given _tagger = new StreamPositionTagger("stream1"); _positionTracker = new PositionTracker(_tagger); _positionTracker.Update( new ProjectionMessage.Projections.CommittedEventReceived( Guid.NewGuid(), new EventPosition(100, 50), "stream1", 1, false, new Event(Guid.NewGuid(), "eventtype", false, new byte[0], new byte[0]))); }
public void When() { // given _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); _positionTracker = new PositionTracker(_tagger); var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}}); var newTag2 = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(20, 15), new Dictionary<string, int> {{"type1", 1}, {"type2", 3}}); _positionTracker.UpdateByCheckpointTagInitial(newTag); _positionTracker.UpdateByCheckpointTagForward(newTag2); }
public void When() { // given var tagger = new PreparePositionTagger(0); var positionTracker = new PositionTracker(tagger); var newTag = CheckpointTag.FromPreparePosition(0, 50); positionTracker.UpdateByCheckpointTagInitial(newTag); _tag = positionTracker.LastTag; _tagger = new PreparePositionTagger(0); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tag); }
public void When() { // given var tagger = new StreamPositionTagger("stream1"); var tracker = new PositionTracker(tagger); var newTag = CheckpointTag.FromStreamPosition("stream1", 1); tracker.UpdateByCheckpointTagInitial(newTag); _tag = tracker.LastTag; _tagger = new StreamPositionTagger("stream1"); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tag); }
public void When() { // given var tagger = new MultiStreamPositionTagger(new []{"stream1", "stream2"}); var tracker = new PositionTracker(tagger); var newTag = CheckpointTag.FromStreamPositions(new Dictionary<string, int>{{"stream1", 1}, {"stream2", 2}}); tracker.UpdateByCheckpointTagInitial(newTag); _tag = tracker.LastTag; _tagger = new MultiStreamPositionTagger(new []{"stream1", "stream2"}); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tag); }
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 void When() { // given var tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); var tracker = new PositionTracker(tagger); var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}}); tracker.UpdateByCheckpointTagInitial(newTag); _tag = tracker.LastTag; _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tag); }
protected ReaderSubscriptionBase( IPublisher publisher, Guid subscriptionId, CheckpointTag @from, IReaderStrategy readerStrategy, ITimeProvider timeProvider, long?checkpointUnhandledBytesThreshold, int?checkpointProcessedEventsThreshold, int checkpointAfterMs, 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; _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); }
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); }
protected CoreProjectionCheckpointManager( IPublisher publisher, Guid projectionCorrelationId, ProjectionConfig projectionConfig, string name, PositionTagger positionTagger, ProjectionNamesBuilder namingBuilder, bool usePersistentCheckpoints) { 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; _requestedCheckpointState = new PartitionState("", null, _zeroTag); _currentProjectionState = new PartitionState("", null, _zeroTag); }
private void CompleteCheckpoint(PositionTracker lastProcessedEventPosition, string projectionState) { CheckpointTag requestedCheckpointPosition = lastProcessedEventPosition.LastTag; if (requestedCheckpointPosition == _lastCompletedCheckpointPosition) { return; // either suggested or requested to stop } _inCheckpoint = true; _requestedCheckpointPosition = requestedCheckpointPosition; _requestedCheckpointState = projectionState; _handledEventsAfterCheckpoint = 0; _closingCheckpoint = _currentCheckpoint; _currentCheckpoint = new ProjectionCheckpoint( _publisher, this, requestedCheckpointPosition, _positionTagger.MakeZeroCheckpointTag(), _projectionConfig.MaxWriteBatchLength, _logger); // checkpoint only after assigning new current checkpoint, as it may call back immediately _closingCheckpoint.Prepare(requestedCheckpointPosition); }
public CoreProjection( string name, Guid projectionCorrelationId, IPublisher publisher, IProjectionStateHandler projectionStateHandler, ProjectionConfig projectionConfig, ILogger logger = null) { if (name == null) { throw new ArgumentNullException("name"); } if (name == "") { throw new ArgumentException("name"); } if (publisher == null) { throw new ArgumentNullException("publisher"); } if (projectionStateHandler == null) { throw new ArgumentNullException("projectionStateHandler"); } _projectionCorrelationId = projectionCorrelationId; _name = name; _projectionConfig = projectionConfig; _logger = logger; _publisher = publisher; _projectionStateHandler = projectionStateHandler; _readDispatcher = new RequestResponseDispatcher <ClientMessage.ReadEventsBackwards, ClientMessage.ReadEventsBackwardsCompleted>( _publisher, v => v.CorrelationId, v => v.CorrelationId); _projectionCheckpointStreamId = ProjectionsStreamPrefix + _name + ProjectionCheckpointStreamSuffix; var builder = new CheckpointStrategy.Builder(); _projectionStateHandler.ConfigureSourceProcessingStrategy(builder); _checkpointStrategy = builder.Build(_projectionConfig.Mode); _eventFilter = _checkpointStrategy.EventFilter; _lastProcessedEventPosition = new PositionTracker(_checkpointStrategy.PositionTagger); _partitionStateCache = new PartitionStateCache(); GoToState(State.Initial); }
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 ProjectionSubscription( Guid projectionCorrelationId, CheckpointTag from, IHandle <ProjectionSubscriptionMessage.CommittedEventReceived> eventHandler, IHandle <ProjectionSubscriptionMessage.CheckpointSuggested> checkpointHandler, IHandle <ProjectionSubscriptionMessage.ProgressChanged> progressHandler, CheckpointStrategy checkpointStrategy, long?checkpointUnhandledBytesThreshold) { if (eventHandler == null) { throw new ArgumentNullException("eventHandler"); } if (checkpointHandler == null) { throw new ArgumentNullException("checkpointHandler"); } if (progressHandler == null) { throw new ArgumentNullException("progressHandler"); } if (checkpointStrategy == null) { throw new ArgumentNullException("checkpointStrategy"); } _eventHandler = eventHandler; _checkpointHandler = checkpointHandler; _progressHandler = progressHandler; _checkpointStrategy = checkpointStrategy; _checkpointUnhandledBytesThreshold = checkpointUnhandledBytesThreshold; _projectionCorrelationId = projectionCorrelationId; _lastPassedOrCheckpointedEventPosition = from.Position; _eventFilter = checkpointStrategy.EventFilter; _positionTagger = checkpointStrategy.PositionTagger; _positionTracker = new PositionTracker(_positionTagger); _positionTracker.UpdateByCheckpointTagInitial(from); }
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; }
private void RequestCheckpoint(PositionTracker lastProcessedEventPosition) { if (!_projectionConfig.CheckpointsEnabled) throw new InvalidOperationException("Checkpoints are not allowed"); if (!_inCheckpoint) CompleteCheckpoint(lastProcessedEventPosition, _currentProjectionState); else _coreProjection.Handle(new CoreProjectionProcessingMessage.PauseRequested()); }
private void CompleteCheckpoint(PositionTracker lastProcessedEventPosition, string projectionState) { CheckpointTag requestedCheckpointPosition = lastProcessedEventPosition.LastTag; if (requestedCheckpointPosition == _lastCompletedCheckpointPosition) return; // either suggested or requested to stop _inCheckpoint = true; _requestedCheckpointPosition = requestedCheckpointPosition; _requestedCheckpointState = projectionState; _handledEventsAfterCheckpoint = 0; _closingCheckpoint = _currentCheckpoint; _currentCheckpoint = new ProjectionCheckpoint( _publisher, this, requestedCheckpointPosition, _positionTagger.MakeZeroCheckpointTag(), _projectionConfig.MaxWriteBatchLength, _logger); // checkpoint only after assigning new current checkpoint, as it may call back immediately _closingCheckpoint.Prepare(requestedCheckpointPosition); }
/// <returns>true - if checkpoint has been completed in-sync</returns> private bool StartCheckpoint(PositionTracker lastProcessedEventPosition, PartitionState projectionState) { Contract.Requires(_closingCheckpoint == null); if (projectionState == null) throw new ArgumentNullException("projectionState"); CheckpointTag requestedCheckpointPosition = lastProcessedEventPosition.LastTag; if (requestedCheckpointPosition == _lastCompletedCheckpointPosition) return true; // either suggested or requested to stop if (_usePersistentCheckpoints) // do not emit any events if we do not use persistent checkpoints EmitPartitionCheckpoints(); _inCheckpoint = true; _requestedCheckpointPosition = requestedCheckpointPosition; _requestedCheckpointState = projectionState; _closingCheckpoint = _currentCheckpoint; _currentCheckpoint = CreateProjectionCheckpoint(requestedCheckpointPosition); // checkpoint only after assigning new current checkpoint, as it may call back immediately _closingCheckpoint.Prepare(requestedCheckpointPosition); return false; // even if prepare completes in sync it notifies the world by a message }
/// <returns>true - if checkpoint has beem completed in-sync</returns> private bool RequestCheckpoint(PositionTracker lastProcessedEventPosition, bool forcePrepareCheckpoint = false) { if (!forcePrepareCheckpoint && !_usePersistentCheckpoints) throw new InvalidOperationException("Checkpoints are not allowed"); if (_inCheckpoint) throw new InvalidOperationException("Checkpoint in progress"); return StartCheckpoint(lastProcessedEventPosition, _currentProjectionState); }
public void when() { _tagger = new TransactionFilePositionTagger(0); _positionTracker = new PositionTracker(_tagger); }
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 void can_be_created() { var t = new StreamPositionTagger("stream1"); var tr = new PositionTracker(t); }
public void when() { _tagger = new MultiStreamPositionTagger(new []{"stream1", "stream2"}); _positionTracker = new PositionTracker(_tagger); }