コード例 #1
0
        private void FinishStopping()
        {
            if (_runningDispatchers > 0)
            {
                return;
            }
            if (_runningComponentCount > 0)
            {
                return;
            }

            _logger.Information(
                "PROJECTIONS SUBSYSTEM: All components stopped and dispatchers drained for Instance: {correlationId}",
                _instanceCorrelationId);
            _subsystemState = SubsystemState.Stopped;

            if (_restarting)
            {
                StartComponents();
                return;
            }

            if (_nodeState == VNodeState.Leader)
            {
                _logger.Information("PROJECTIONS SUBSYSTEM: Node state has changed to Leader. Starting projections.");
                StartComponents();
            }
        }
コード例 #2
0
        private void CalculateSubsystemState(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(DiscardedQubitsBox.Text))
            {
                return;
            }
            StateOperator state           = StateOperator.FromQuantumState(Layer.GetSystemState());
            List <int>    discardedQubits = new List <int>();
            string        qubits          = DiscardedQubitsBox.Text.Replace(",", "");

            for (int i = 0; i < qubits.Length; i++)
            {
                discardedQubits.Add(Convert.ToInt32(qubits[i] - 48));
            }
            SubState = state.PartialTrace(discardedQubits);
            SubsystemState.ResizeGrid(SubState.RowDimension, SubState.ColumnDimension);
            for (int i = 0; i < SubState.RowDimension; i++)
            {
                for (int j = 0; j < SubState.ColumnDimension; j++)
                {
                    SubsystemState[i, j] = ComplexParser.ToString(SubState[i, j], 4);
                }
            }
            SubsystemStateGrid.Visibility = Visibility.Visible;
            if (SubState.Size == 1)
            {
                ExamineSubsystemButton.IsEnabled = false;
            }
        }
コード例 #3
0
        private void StartComponents()
        {
            if (_nodeState != VNodeState.Leader)
            {
                _logger.Debug("PROJECTIONS SUBSYSTEM: Not starting because node is not leader. Current node state: {nodeState}",
                              _nodeState);
                return;
            }
            if (_subsystemState != SubsystemState.Ready && _subsystemState != SubsystemState.Stopped)
            {
                _logger.Debug("PROJECTIONS SUBSYSTEM: Not starting because system is not ready or stopped. Current Subsystem state: {subsystemState}",
                              _subsystemState);
                return;
            }
            if (_runningComponentCount > 0)
            {
                _logger.Warning("PROJECTIONS SUBSYSTEM: Subsystem is stopped, but components are still running.");
                return;
            }

            _subsystemState        = SubsystemState.Starting;
            _restarting            = false;
            _instanceCorrelationId = Guid.NewGuid();
            _logger.Information("PROJECTIONS SUBSYSTEM: Starting components for Instance: {instanceCorrelationId}", _instanceCorrelationId);
            _pendingComponentStarts = _componentCount;
            _leaderMainBus.Publish(new ProjectionSubsystemMessage.StartComponents(_instanceCorrelationId));
        }
コード例 #4
0
        private void StopComponents()
        {
            if (_subsystemState != SubsystemState.Started)
            {
                _logger.Debug("PROJECTIONS SUBSYSTEM: Not stopping because subsystem is not in a started state. Current Subsystem state: {state}", _subsystemState);
                return;
            }

            _logger.Information("PROJECTIONS SUBSYSTEM: Stopping components for Instance: {instanceCorrelationId}", _instanceCorrelationId);
            _subsystemState = SubsystemState.Stopping;
            _leaderMainBus.Publish(new ProjectionSubsystemMessage.StopComponents(_instanceCorrelationId));
        }
コード例 #5
0
 public void Handle(SystemMessage.SystemCoreReady message)
 {
     if (_subsystemState != SubsystemState.NotReady)
     {
         return;
     }
     _subsystemState = SubsystemState.Ready;
     if (_nodeState == VNodeState.Leader)
     {
         StartComponents();
     }
 }
コード例 #6
0
        private void AllComponentsStarted()
        {
            _logger.Info("PROJECTIONS SUBSYSTEM: All components started for Instance: {instanceCorrelationId}",
                         _instanceCorrelationId);
            _subsystemState = SubsystemState.Started;
            _masterOutputBus.Publish(new SystemMessage.SubSystemInitialized("Projections"));

            if (_nodeState != VNodeState.Master)
            {
                _logger.Info("PROJECTIONS SUBSYSTEM: Node state is no longer Master. Stopping projections. Current node state: {nodeState}",
                             _nodeState);
                StopComponents();
            }
        }
コード例 #7
0
        private void AllComponentsStarted()
        {
            _logger.Information("PROJECTIONS SUBSYSTEM: All components started for Instance: {instanceCorrelationId}",
                                _instanceCorrelationId);
            _subsystemState     = SubsystemState.Started;
            _runningDispatchers = _dispatcherCount;

            PublishInitialized();

            if (_nodeState != VNodeState.Leader)
            {
                _logger.Information("PROJECTIONS SUBSYSTEM: Node state is no longer Leader. Stopping projections. Current node state: {nodeState}",
                                    _nodeState);
                StopComponents();
            }
        }
コード例 #8
0
 public void Handle(SystemMessage.SystemCoreReady message)
 {
     if (_subsystemState != SubsystemState.NotReady)
     {
         return;
     }
     _subsystemState = SubsystemState.Ready;
     if (_nodeState == VNodeState.Leader)
     {
         StartComponents();
         return;
     }
     if (_nodeState == VNodeState.Follower || _nodeState == VNodeState.ReadOnlyReplica)
     {
         PublishInitialized();
     }
 }
コード例 #9
0
        private void AllComponentsStopped()
        {
            _logger.Info("PROJECTIONS SUBSYSTEM: All components stopped for Instance: {instanceCorrelationId}",
                         _instanceCorrelationId);
            _subsystemState = SubsystemState.Stopped;

            if (_restarting)
            {
                StartComponents();
                return;
            }

            if (_nodeState == VNodeState.Master)
            {
                _logger.Info("PROJECTIONS SUBSYSTEM: Node state has changed to Master. Starting projections.");
                StartComponents();
            }
        }
        internal void OnGetResponseFromAccountService(AccountService.AsyncRequestState asyncRequestState)
        {
            switch (asyncRequestState.HttpRequestQueueResultCode)
            {
            case HttpRequestQueueResultCode.QueueTimeout:
                break;

            case HttpRequestQueueResultCode.Offline:
                break;

            case HttpRequestQueueResultCode.QueueFull:
                break;

            default:
            {
                if (this.healthState.HealthStatus != HealthStatus.Ok)
                {
                    this.healthState = SubsystemState.MakeOK(SubsystemName);
                }
                break;
            }
            }
        }
コード例 #11
0
 public virtual void Terminate()
 {
     State = SubsystemState.Terminated;
 }
コード例 #12
0
 public virtual void Initialize(IControllerProvider args)
 {
     Args  = args;
     State = SubsystemState.Initialized;
 }