Пример #1
0
        public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
        {
            EnsureState(State.LoadStateRequested);
            try {
                var checkpointTag = message.CheckpointTag;
                var phase = checkpointTag == null ? 0 : checkpointTag.Phase;
                var projectionProcessingPhase = _projectionProcessingPhases[phase];
                if (checkpointTag == null)
                    checkpointTag = projectionProcessingPhase.MakeZeroCheckpointTag();
                checkpointTag = projectionProcessingPhase.AdjustTag(checkpointTag);
                //TODO: initialize projection state here (test it)
                //TODO: write test to ensure projection state is correctly loaded from a checkpoint and posted back when enough empty records processed
                //TODO: handle errors
                _coreProjectionCheckpointWriter.StartFrom(checkpointTag, message.CheckpointEventNumber);

                PartitionState rootPartitionState = null;
                if (_requiresRootPartition) {
                    rootPartitionState = PartitionState.Deserialize(message.CheckpointData, checkpointTag);
                    _partitionStateCache.CacheAndLockPartitionState("", rootPartitionState, null);
                }

                BeginPhase(projectionProcessingPhase, checkpointTag, rootPartitionState);
                GoToState(State.StateLoaded);
                if (_startOnLoad) {
                    if (_slaveProjections != null)
                        _projectionProcessingPhase.AssignSlaves(_slaveProjections);
                    _projectionProcessingPhase.Subscribe(checkpointTag, fromCheckpoint: true);
                } else
                    GoToState(State.Stopped);
            } catch (Exception ex) {
                SetFaulted(ex);
            }
        }
Пример #2
0
        public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
        {
            CoreProjection projection;

            if (_projections.TryGetValue(message.ProjectionId, out projection))
            {
                projection.Handle(message);
            }
        }
Пример #3
0
 public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
 {
     EnsureState(State.LoadStateRequsted);
     try
     {
         OnLoadStateCompleted(message.CheckpointTag, message.CheckpointData);
     }
     catch (Exception ex)
     {
         SetFaulted(ex);
     }
 }
 public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
 {
     _checkpointLoaded = message;
     _mre.Set();
 }
Пример #5
0
 public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
 {
     _checkpointLoadedMessages.Add(message);
 }
 public void Handle(CoreProjectionProcessingMessage.CheckpointLoaded message)
 {
     throw new NotImplementedException();
 }