Beispiel #1
0
        public async void StartSse()
        {
            try
            {
                var response = await _authApiClient.AuthenticateAsync();

                _log.Debug($"Auth service response pushEnabled: {response.PushEnabled}.");

                if (response.PushEnabled.Value)
                {
                    _sseHandler.Start(response.Token, response.Channels);
                    _backOff.Reset();
                    ScheduleNextTokenRefresh(response.Expiration.Value);
                }
                else
                {
                    StopSse();
                }

                if (response.Retry.Value)
                {
                    ScheduleNextTokenRefresh(_backOff.GetInterval());
                }
            }
            catch (Exception ex)
            {
                _log.Error($"StartSse: {ex.Message}");
            }
        }
Beispiel #2
0
        public async Task <bool> StartSse()
        {
            try
            {
                var response = await _authApiClient.AuthenticateAsync();

                _log.Debug($"Auth service response pushEnabled: {response.PushEnabled}.");

                if (response.PushEnabled.Value && _sseHandler.Start(response.Token, response.Channels))
                {
                    _backOff.Reset();
                    ScheduleNextTokenRefresh(response.Expiration.Value);
                    _telemetryRuntimeProducer.RecordStreamingEvent(new StreamingEvent(EventTypeEnum.TokenRefresh, CalcularteNextTokenExpiration(response.Expiration.Value)));
                    return(true);
                }

                StopSse();

                if (response.Retry.Value)
                {
                    ScheduleNextTokenRefresh(_backOff.GetInterval());
                }
                else
                {
                    ForceCancellationToken();
                }
            }
            catch (Exception ex)
            {
                _log.Error($"StartSse: {ex.Message}");
            }

            return(false);
        }
Beispiel #3
0
        public void Start_ShouldConnect()
        {
            // Arrange.
            var token    = "fake-test";
            var channels = "channel-test";

            _eventSourceClient
            .Setup(mock => mock.ConnectAsync(It.IsAny <string>()))
            .Returns(true);

            // Act.
            var result = _sseHandler.Start(token, channels);

            // Assert.
            Assert.IsTrue(result);
            _eventSourceClient.Verify(mock => mock.ConnectAsync(It.IsAny <string>()), Times.Once);
        }
Beispiel #4
0
        public void Start_ShouldConnect()
        {
            // Arrange.
            var token    = "fake-test";
            var channels = "channel-test";

            _eventSourceClient
            .Raise(mock => mock.ConnectedEvent += null, new FeedbackEventArgs(true));

            // Act.
            _sseHandler.Start(token, channels);

            // Assert.
            _eventSourceClient.Verify(mock => mock.ConnectAsync(It.IsAny <string>()), Times.Once);
            _splitsWorker.Verify(mock => mock.Start(), Times.Once);
            _segmentsWorker.Verify(mock => mock.Start(), Times.Once);
        }