aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-22 19:55:33 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-22 19:55:33 -0400
commitaa181c8b25240c4911e24cdbfe850e408e7e51af (patch)
tree4b3866db460ed455538fc75cd993010e6f449031
parentf91c30a4071291cb11f193da3cd435114cd43aba (diff)
remove more ActiveService usage
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs63
1 files changed, 43 insertions, 20 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index aff801516..ffa774300 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<QueryResult<TimerInfoDto>> 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<TimerInfo, ILiveTvService>(r, i));
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error getting recordings", ex);
+ return new List<Tuple<TimerInfo, ILiveTvService>>();
+ }
+ });
+ 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<TimerInfoDto>();
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<QueryResult<SeriesTimerInfoDto>> 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<SeriesTimerInfo, ILiveTvService>(r, i));
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error getting recordings", ex);
+ return new List<Tuple<SeriesTimerInfo, ILiveTvService>>();
+ }
+ });
+ 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();