Browse Source

update tuner pooling

Luke Pulverenti 9 years ago
parent
commit
21a2160fca

+ 18 - 39
MediaBrowser.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs

@@ -109,23 +109,22 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
 
                 foreach (var host in hostsWithChannel)
                 {
-                    // Check to make sure the tuner is available
-                    // If there's only one tuner, don't bother with the check and just let the tuner be the one to throw an error
-                    if (hostsWithChannel.Count > 1 && !await IsAvailable(host, channelId, cancellationToken).ConfigureAwait(false))
+                    try
                     {
-                        Logger.Error("Tuner is not currently available");
-                        continue;
-                    }
+                        var mediaSources = await GetChannelStreamMediaSources(host, channelId, cancellationToken).ConfigureAwait(false);
 
-                    var mediaSources = await GetChannelStreamMediaSources(host, channelId, cancellationToken).ConfigureAwait(false);
+                        // Prefix the id with the host Id so that we can easily find it
+                        foreach (var mediaSource in mediaSources)
+                        {
+                            mediaSource.Id = host.Id + mediaSource.Id;
+                        }
 
-                    // Prefix the id with the host Id so that we can easily find it
-                    foreach (var mediaSource in mediaSources)
+                        return mediaSources;
+                    }
+                    catch (Exception ex)
                     {
-                        mediaSource.Id = host.Id + mediaSource.Id;
+                        Logger.Error("Error opening tuner", ex);
                     }
-
-                    return mediaSources;
                 }
             }
 
@@ -163,23 +162,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
 
                 foreach (var host in hostsWithChannel)
                 {
-                    // Check to make sure the tuner is available
-                    // If there's only one tuner, don't bother with the check and just let the tuner be the one to throw an error
-                    // If a streamId is specified then availibility has already been checked in GetChannelStreamMediaSources
-                    if (string.IsNullOrWhiteSpace(streamId) && hostsWithChannel.Count > 1)
+                    try
                     {
-                        if (!await IsAvailable(host, channelId, cancellationToken).ConfigureAwait(false))
+                        var stream = await GetChannelStream(host, channelId, streamId, cancellationToken).ConfigureAwait(false);
+
+                        if (stream != null)
                         {
-                            Logger.Error("Tuner is not currently available");
-                            continue;
+                            return stream;
                         }
                     }
-
-                    var stream = await GetChannelStream(host, channelId, streamId, cancellationToken).ConfigureAwait(false);
-
-                    if (stream != null)
+                    catch (Exception ex)
                     {
-                        return stream;
+                        Logger.Error("Error opening tuner", ex);
                     }
                 }
             }
@@ -187,21 +181,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
             throw new LiveTvConflictException();
         }
 
-        protected async Task<bool> IsAvailable(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken)
-        {
-            try
-            {
-                return await IsAvailableInternal(tuner, channelId, cancellationToken).ConfigureAwait(false);
-            }
-            catch (Exception ex)
-            {
-                Logger.ErrorException("Error checking tuner availability", ex);
-                return false;
-            }
-        }
-
-        protected abstract Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken);
-
         protected abstract bool IsValidChannelId(string channelId);
 
         protected LiveTvOptions GetConfiguration()

+ 0 - 7
MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -398,12 +398,5 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                 await GetChannels(info, false, CancellationToken.None).ConfigureAwait(false);
             }
         }
-
-        protected override async Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken)
-        {
-            var info = await GetTunerInfos(tuner, cancellationToken).ConfigureAwait(false);
-
-            return info.Any(i => i.Status == LiveTvTunerStatus.Available || string.Equals(i.ChannelId, channelId, StringComparison.OrdinalIgnoreCase));
-        }
     }
 }

+ 0 - 5
MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs

@@ -190,10 +190,5 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
             }
             return new List<MediaSourceInfo> { };
         }
-
-        protected override Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken)
-        {
-            return Task.FromResult(true);
-        }
     }
 }