less locking for screen connection, force more concurrency
This commit is contained in:
parent
0b10695e07
commit
0e93b1356f
10 changed files with 143 additions and 93 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue