aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-02 15:59:33 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-02 15:59:33 -0500
commit495d06a9705affac48e7cb51760863eb3edc472a (patch)
tree34b54ca6609c4367006953250b8dde7c5101fb55
parentfcc26d54536f3bb67ae4dde19c5230ae96d59afa (diff)
re-use socket
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs18
1 files changed, 13 insertions, 5 deletions
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
index 53405e9de..a25a6d6ed 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
@@ -38,15 +38,23 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
public async Task<bool> CheckTunerAvailability(IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
{
+ using (var socket = _socketFactory.CreateTcpSocket(remoteIp, HdHomeRunPort))
+ {
+ return await CheckTunerAvailability(socket, remoteIp, tuner, cancellationToken).ConfigureAwait(false);
+ }
+ }
+
+ private async Task<bool> CheckTunerAvailability(ISocket socket, IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
+ {
var ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort);
- var tcpClient = _socketFactory.CreateTcpSocket(remoteIp, HdHomeRunPort);
+
var lockkeyMsg = CreateGetMessage(tuner, "lockkey");
- await tcpClient.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken);
- var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ await socket.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken);
+ var response = await socket.ReceiveAsync(cancellationToken).ConfigureAwait(false);
string returnVal;
ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal);
- return (returnVal == "none");
+ return string.Equals(returnVal, "none", StringComparison.OrdinalIgnoreCase);
}
public async Task StartStreaming(IpAddressInfo remoteIp, IpAddressInfo localIp, int localPort, string url, int numTuners, CancellationToken cancellationToken)
@@ -71,7 +79,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
for (int i = 0; i < numTuners; ++i)
{
- if (!await CheckTunerAvailability(_remoteIp, i, cancellationToken).ConfigureAwait(false))
+ if (!await CheckTunerAvailability(tcpClient, _remoteIp, i, cancellationToken).ConfigureAwait(false))
continue;
_activeTuner = i;