less locking for screen connection, force more concurrency

This commit is contained in:
Vinzenz Schroeter 2024-04-30 23:49:39 +02:00 committed by RobbersDaughter
parent 0b10695e07
commit 0e93b1356f
10 changed files with 143 additions and 93 deletions

View file

@ -18,10 +18,13 @@ internal abstract class WebsocketServerConnection(
public async Task ReceiveAsync()
{
await foreach (var buffer in Socket.ReadAllAsync())
await LockedAsync(() => HandleMessageLockedAsync(buffer));
await HandleMessageAsync(buffer);
Logger.LogTrace("done receiving");
}
protected virtual ValueTask HandleMessageAsync(Memory<byte> buffer)
=> LockedAsync(() => HandleMessageLockedAsync(buffer));
protected abstract ValueTask HandleMessageLockedAsync(Memory<byte> buffer);
protected async ValueTask LockedAsync(Func<ValueTask> action)