private IObservable <TOutput> GetOutputStreamImpl()
        {
            return(Observable.Create <TOutput>(obs =>
            {
                _logger.LogInformation("Got stream request from client");

                var sotw = _cacheStatedUpdates.TakeUntilInclusive(x => !x.IsStale)
                           .Select(CreateResponseFromCacheState);

                return sotw.Concat(_events.Select(evt => MapSingleEventToUpdateDto(_cacheState.State, evt)))
                .Merge(_connectionChanged.Where(x => !x.IsConnected).Select(_ => GetDisconnectedStaleUpdate()))
                .Where(IsValidUpdate)
                .Subscribe(obs);
            }));
        }
Пример #2
0
        private IObservable <TOutput> GetOutputStreamImpl()
        {
            return(Observable.Create <TOutput>(obs =>
            {
                if (_log.IsEnabled(LogEventLevel.Information))
                {
                    _log.Information("Got stream request from client");
                }

                var sotw = _stateOfTheWorldUpdates.TakeUntilInclusive(x => !x.IsStale)
                           .Select(CreateResponseFromStateOfTheWorld);

                return sotw.Concat(_events.Select(evt => MapSingleEventToUpdateDto(_stateOfTheWorldContainer.StateOfTheWorld, evt)))
                .Merge(_connectionChanged.Where(x => !x.IsConnected).Select(_ => GetDisconnectedStaleUpdate()))
                .Where(IsValidUpdate)
                .Subscribe(obs);
            }));
        }