From aa181c8b25240c4911e24cdbfe850e408e7e51af Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Mar 2015 19:55:33 -0400 Subject: [PATCH] remove more ActiveService usage --- .../LiveTv/LiveTvManager.cs | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index aff8015167..ffa7743006 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1289,36 +1289,47 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task> GetTimers(TimerQuery query, CancellationToken cancellationToken) { - var service = ActiveService; - var timers = await service.GetTimersAsync(cancellationToken).ConfigureAwait(false); + var tasks = _services.Select(async i => + { + try + { + var recs = await i.GetTimersAsync(cancellationToken).ConfigureAwait(false); + return recs.Select(r => new Tuple(r, i)); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting recordings", ex); + return new List>(); + } + }); + var results = await Task.WhenAll(tasks).ConfigureAwait(false); + var timers = results.SelectMany(i => i.ToList()); if (!string.IsNullOrEmpty(query.ChannelId)) { var guid = new Guid(query.ChannelId); - timers = timers.Where(i => guid == _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId)); + timers = timers.Where(i => guid == _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId)); } if (!string.IsNullOrEmpty(query.SeriesTimerId)) { var guid = new Guid(query.SeriesTimerId); - var currentServiceName = service.Name; - timers = timers - .Where(i => _tvDtoService.GetInternalSeriesTimerId(currentServiceName, i.SeriesTimerId) == guid); + .Where(i => _tvDtoService.GetInternalSeriesTimerId(i.Item2.Name, i.Item1.SeriesTimerId) == guid); } var returnList = new List(); foreach (var i in timers) { - var program = string.IsNullOrEmpty(i.ProgramId) ? + var program = string.IsNullOrEmpty(i.Item1.ProgramId) ? null : - GetInternalProgram(_tvDtoService.GetInternalProgramId(service.Name, i.ProgramId).ToString("N")); + GetInternalProgram(_tvDtoService.GetInternalProgramId(i.Item2.Name, i.Item1.ProgramId).ToString("N")); - var channel = string.IsNullOrEmpty(i.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.ChannelId)); + var channel = string.IsNullOrEmpty(i.Item1.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId)); - returnList.Add(_tvDtoService.GetTimerInfoDto(i, service, program, channel)); + returnList.Add(_tvDtoService.GetTimerInfoDto(i.Item1, i.Item2, program, channel)); } var returnArray = returnList @@ -1402,21 +1413,33 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task> GetSeriesTimers(SeriesTimerQuery query, CancellationToken cancellationToken) { - var service = ActiveService; - - var timers = await service.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); + var tasks = _services.Select(async i => + { + try + { + var recs = await i.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); + return recs.Select(r => new Tuple(r, i)); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting recordings", ex); + return new List>(); + } + }); + var results = await Task.WhenAll(tasks).ConfigureAwait(false); + var timers = results.SelectMany(i => i.ToList()); if (string.Equals(query.SortBy, "Priority", StringComparison.OrdinalIgnoreCase)) { timers = query.SortOrder == SortOrder.Descending ? - timers.OrderBy(i => i.Priority).ThenByStringDescending(i => i.Name) : - timers.OrderByDescending(i => i.Priority).ThenByString(i => i.Name); + timers.OrderBy(i => i.Item1.Priority).ThenByStringDescending(i => i.Item1.Name) : + timers.OrderByDescending(i => i.Item1.Priority).ThenByString(i => i.Item1.Name); } else { timers = query.SortOrder == SortOrder.Descending ? - timers.OrderByStringDescending(i => i.Name) : - timers.OrderByString(i => i.Name); + timers.OrderByStringDescending(i => i.Item1.Name) : + timers.OrderByString(i => i.Item1.Name); } var returnArray = timers @@ -1424,14 +1447,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv { string channelName = null; - if (!string.IsNullOrEmpty(i.ChannelId)) + if (!string.IsNullOrEmpty(i.Item1.ChannelId)) { - var internalChannelId = _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId); + var internalChannelId = _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId); var channel = GetInternalChannel(internalChannelId); channelName = channel == null ? null : channel.Name; } - return _tvDtoService.GetSeriesTimerInfoDto(i, service, channelName); + return _tvDtoService.GetSeriesTimerInfoDto(i.Item1, i.Item2, channelName); }) .ToArray();