mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 11:34:57 +02:00
re-use socket
This commit is contained in:
parent
fcc26d5453
commit
495d06a970
1 changed files with 13 additions and 5 deletions
|
@ -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…
Reference in a new issue