Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReceiveAsync() [2/2]

virtual async ValueTask< ValueWebSocketReceiveResult > System.Net.WebSockets.WebSocket.ReceiveAsync ( Memory< byte > buffer,
CancellationToken cancellationToken )
inlinevirtualinherited

Reimplemented in System.Net.WebSockets.ClientWebSocket, and System.Net.WebSockets.ManagedWebSocket.

Definition at line 34 of file WebSocket.cs.

35 {
36 if (MemoryMarshal.TryGetArray((ReadOnlyMemory<byte>)buffer, out ArraySegment<byte> segment))
37 {
38 WebSocketReceiveResult webSocketReceiveResult = await ReceiveAsync(segment, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
39 return new ValueWebSocketReceiveResult(webSocketReceiveResult.Count, webSocketReceiveResult.MessageType, webSocketReceiveResult.EndOfMessage);
40 }
41 byte[] array = ArrayPool<byte>.Shared.Rent(buffer.Length);
42 try
43 {
44 WebSocketReceiveResult webSocketReceiveResult2 = await ReceiveAsync(new ArraySegment<byte>(array, 0, buffer.Length), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
45 new Span<byte>(array, 0, webSocketReceiveResult2.Count).CopyTo(buffer.Span);
46 return new ValueWebSocketReceiveResult(webSocketReceiveResult2.Count, webSocketReceiveResult2.MessageType, webSocketReceiveResult2.EndOfMessage);
47 }
48 finally
49 {
51 }
52 }
static ArrayPool< T > Shared
Definition ArrayPool.cs:7
Task< WebSocketReceiveResult > ReceiveAsync(ArraySegment< byte > buffer, CancellationToken cancellationToken)

References System.array, System.buffer, System.cancellationToken, System.Span< T >.CopyTo(), System.Net.WebSockets.WebSocketReceiveResult.Count, System.Net.WebSockets.WebSocketReceiveResult.EndOfMessage, System.Net.WebSockets.WebSocketReceiveResult.MessageType, System.Net.WebSockets.WebSocket.ReceiveAsync(), and System.Buffers.ArrayPool< T >.Shared.