public void Handle(ProjectionSubscriptionMessage.CheckpointSuggested message) { if (IsOutOfOrderSubscriptionMessage(message)) { return; } RegisterSubscriptionMessage(message); EnsureState( State.Running | State.Paused | State.Stopping | State.Stopped | State.FaultedStopping | State.Faulted); try { if ((_state == State.Running || _state == State.Paused) && _projectionConfig.CheckpointsEnabled) { CheckpointTag checkpointTag = message.CheckpointTag; var checkpointSuggestedWorkItem = new CheckpointSuggestedWorkItem(this, message, _checkpointManager); _processingQueue.EnqueueTask(checkpointSuggestedWorkItem, checkpointTag); } _processingQueue.ProcessEvent(); } catch (Exception ex) { SetFaulted(ex); } }
public CheckpointSuggestedWorkItem( CoreProjection projection, ProjectionSubscriptionMessage.CheckpointSuggested message, ICoreProjectionCheckpointManager checkpointManager) : base(projection, "") // checkpoints are serialized based on string.empty token stream name { _message = message; _checkpointManager = checkpointManager; }
public void Handle(ProjectionSubscriptionMessage.CheckpointSuggested message) { _checkpointSuggestedMessages.Add(message); }