re-use socket

pull/1154/head
Luke Pulverenti 8 years ago
parent fcc26d5453
commit 495d06a970

@ -37,16 +37,24 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
} }
public async Task<bool> CheckTunerAvailability(IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken) 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 ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort);
var tcpClient = _socketFactory.CreateTcpSocket(remoteIp, HdHomeRunPort);
var lockkeyMsg = CreateGetMessage(tuner, "lockkey"); var lockkeyMsg = CreateGetMessage(tuner, "lockkey");
await tcpClient.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken); await socket.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken);
var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); var response = await socket.ReceiveAsync(cancellationToken).ConfigureAwait(false);
string returnVal; string returnVal;
ParseReturnMessage(response.Buffer, response.ReceivedBytes, out 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) 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) 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; continue;
_activeTuner = i; _activeTuner = i;

Loading…
Cancel
Save