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); })); }
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); })); }