mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-26 02:27:06 +01:00
Make more things async
This commit is contained in:
@@ -43,10 +43,11 @@ namespace Jellyfin.Server.SocketSharp
|
||||
socket.OnMessage += socket_OnMessage;
|
||||
socket.OnClose += socket_OnClose;
|
||||
socket.OnError += socket_OnError;
|
||||
|
||||
WebSocket.ConnectAsServer();
|
||||
}
|
||||
|
||||
public Task ConnectAsServerAsync()
|
||||
=> WebSocket.ConnectAsServer();
|
||||
|
||||
public Task StartReceive()
|
||||
{
|
||||
return _taskCompletionSource.Task;
|
||||
@@ -133,7 +134,7 @@ namespace Jellyfin.Server.SocketSharp
|
||||
|
||||
_cancellationTokenSource.Cancel();
|
||||
|
||||
WebSocket.Close();
|
||||
WebSocket.CloseAsync().GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,9 +34,16 @@ namespace Jellyfin.Server.SocketSharp
|
||||
private CancellationTokenSource _disposeCancellationTokenSource = new CancellationTokenSource();
|
||||
private CancellationToken _disposeCancellationToken;
|
||||
|
||||
public WebSocketSharpListener(ILogger logger, X509Certificate certificate, IStreamHelper streamHelper,
|
||||
INetworkManager networkManager, ISocketFactory socketFactory, ICryptoProvider cryptoProvider,
|
||||
bool enableDualMode, IFileSystem fileSystem, IEnvironmentInfo environment)
|
||||
public WebSocketSharpListener(
|
||||
ILogger logger,
|
||||
X509Certificate certificate,
|
||||
IStreamHelper streamHelper,
|
||||
INetworkManager networkManager,
|
||||
ISocketFactory socketFactory,
|
||||
ICryptoProvider cryptoProvider,
|
||||
bool enableDualMode,
|
||||
IFileSystem fileSystem,
|
||||
IEnvironmentInfo environment)
|
||||
{
|
||||
_logger = logger;
|
||||
_certificate = certificate;
|
||||
@@ -61,7 +68,9 @@ namespace Jellyfin.Server.SocketSharp
|
||||
public void Start(IEnumerable<string> urlPrefixes)
|
||||
{
|
||||
if (_listener == null)
|
||||
{
|
||||
_listener = new HttpListener(_logger, _cryptoProvider, _socketFactory, _networkManager, _streamHelper, _fileSystem, _environment);
|
||||
}
|
||||
|
||||
_listener.EnableDualMode = _enableDualMode;
|
||||
|
||||
@@ -70,22 +79,14 @@ namespace Jellyfin.Server.SocketSharp
|
||||
_listener.LoadCert(_certificate);
|
||||
}
|
||||
|
||||
foreach (var prefix in urlPrefixes)
|
||||
{
|
||||
_logger.LogInformation("Adding HttpListener prefix " + prefix);
|
||||
_listener.Prefixes.Add(prefix);
|
||||
}
|
||||
_logger.LogInformation("Adding HttpListener prefixes {Prefixes}", urlPrefixes);
|
||||
_listener.Prefixes.AddRange(urlPrefixes);
|
||||
|
||||
_listener.OnContext = ProcessContext;
|
||||
_listener.OnContext = async c => await InitTask(c, _disposeCancellationToken).ConfigureAwait(false);
|
||||
|
||||
_listener.Start();
|
||||
}
|
||||
|
||||
private void ProcessContext(HttpListenerContext context)
|
||||
{
|
||||
var _ = Task.Run(async () => await InitTask(context, _disposeCancellationToken));
|
||||
}
|
||||
|
||||
private static void LogRequest(ILogger logger, HttpListenerRequest request)
|
||||
{
|
||||
var url = request.Url.ToString();
|
||||
@@ -139,10 +140,7 @@ namespace Jellyfin.Server.SocketSharp
|
||||
Endpoint = endpoint
|
||||
};
|
||||
|
||||
if (WebSocketConnecting != null)
|
||||
{
|
||||
WebSocketConnecting(connectingArgs);
|
||||
}
|
||||
WebSocketConnecting?.Invoke(connectingArgs);
|
||||
|
||||
if (connectingArgs.AllowConnection)
|
||||
{
|
||||
@@ -153,6 +151,7 @@ namespace Jellyfin.Server.SocketSharp
|
||||
if (WebSocketConnected != null)
|
||||
{
|
||||
var socket = new SharpWebSocket(webSocketContext.WebSocket, _logger);
|
||||
await socket.ConnectAsServerAsync().ConfigureAwait(false);
|
||||
|
||||
WebSocketConnected(new WebSocketConnectEventArgs
|
||||
{
|
||||
@@ -162,7 +161,7 @@ namespace Jellyfin.Server.SocketSharp
|
||||
Endpoint = endpoint
|
||||
});
|
||||
|
||||
await ReceiveWebSocket(ctx, socket).ConfigureAwait(false);
|
||||
await ReceiveWebSocketAsync(ctx, socket).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -180,7 +179,7 @@ namespace Jellyfin.Server.SocketSharp
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ReceiveWebSocket(HttpListenerContext ctx, SharpWebSocket socket)
|
||||
private async Task ReceiveWebSocketAsync(HttpListenerContext ctx, SharpWebSocket socket)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user