예제 #1
0
        protected override void CalculateState()
        {
            if (_stateManager.IsFinalState())
            {
                return;
            }

            if (ExecutorState == ExecutorState.Faulted)
            {
                _stateManager.SetState(ReaderState.Faulted);
                return;
            }

            switch (ChannelState)
            {
            case ChannelState.ClosedByServer:
            case ChannelState.Disconnected:
                _stateManager.SetState(ReaderState.Disconnected);
                _ = _reader.EstablishNewChannel(CancellationTokenSource.Token);
                return;

            case ChannelState.Connected:
                _stateManager.SetState(ReaderState.Connected);
                return;

            case ChannelState.ReachedEndOfTopic:
                _stateManager.SetState(ReaderState.ReachedEndOfTopic);
                return;
            }
        }
예제 #2
0
        protected override void CalculateState()
        {
            if (_stateManager.IsFinalState())
            {
                return;
            }

            if (ExecutorState == ExecutorState.Faulted)
            {
                _stateManager.SetState(ConsumerState.Faulted);
                return;
            }

            switch (ChannelState)
            {
            case ChannelState.Active:
                _stateManager.SetState(ConsumerState.Active);
                return;

            case ChannelState.Inactive:
                _stateManager.SetState(ConsumerState.Inactive);
                return;

            case ChannelState.ClosedByServer:
            case ChannelState.Disconnected:
                _stateManager.SetState(ConsumerState.Disconnected);
                _ = _consumer.EstablishNewChannel(CancellationTokenSource.Token);
                return;

            case ChannelState.Connected:
                if (!_isFailoverSubscription)
                {
                    _stateManager.SetState(ConsumerState.Active);
                }
                return;

            case ChannelState.ReachedEndOfTopic:
                _stateManager.SetState(ConsumerState.ReachedEndOfTopic);
                return;

            case ChannelState.Unsubscribed:
                _stateManager.SetState(ConsumerState.Unsubscribed);
                return;
            }
        }