示例#1
0
        public ProjectionStatistics GetStatistics()
        {
            _coreQueue.Publish(new CoreProjectionManagementMessage.UpdateStatistics(Id));
            ProjectionStatistics status;

            if (_lastReceivedStatistics == null)
            {
                status = new ProjectionStatistics
                {
                    Name         = _name,
                    Epoch        = -1,
                    Version      = -1,
                    Mode         = GetMode(),
                    Status       = _state.EnumValueName(),
                    MasterStatus = _state
                };
            }
            else
            {
                status      = _lastReceivedStatistics.Clone();
                status.Mode = GetMode();
                status.Name = _name;
                var enabledSuffix = ((_state == ManagedProjectionState.Stopped || _state == ManagedProjectionState.Faulted) && Enabled ? " (Enabled)" : "");
                status.Status = (status.Status == "Stopped" && _state == ManagedProjectionState.Completed
                                    ? _state.EnumValueName()
                                    : (!status.Status.StartsWith(_state.EnumValueName())
                                           ? _state.EnumValueName() + "/" + status.Status
                                           : status.Status)) + enabledSuffix;
                status.MasterStatus = _state;
            }
            if (_state == ManagedProjectionState.Faulted)
            {
                status.StateReason = _faultedReason;
            }
            status.Enabled = Enabled;
            return(status);
        }