コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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;
 }
コード例 #3
0
 public void Handle(ProjectionSubscriptionMessage.CheckpointSuggested message)
 {
     _checkpointSuggestedMessages.Add(message);
 }