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

◆ HandleReceivedPingPongAsync()

async ValueTask System.Net.WebSockets.ManagedWebSocket.HandleReceivedPingPongAsync ( MessageHeader header,
CancellationToken cancellationToken )
inlineprivate

Definition at line 1122 of file ManagedWebSocket.cs.

1123 {
1124 if (header.PayloadLength > 0 && _receiveBufferCount < header.PayloadLength)
1125 {
1126 await EnsureBufferContainsAsync((int)header.PayloadLength, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
1127 }
1128 if (header.Opcode == MessageOpcode.Ping)
1129 {
1130 if (_isServer)
1131 {
1132 ApplyMask(_receiveBuffer.Span.Slice(_receiveBufferOffset, (int)header.PayloadLength), header.Mask, 0);
1133 }
1134 await SendFrameAsync(MessageOpcode.Pong, endOfMessage: true, disableCompression: true, _receiveBuffer.Slice(_receiveBufferOffset, (int)header.PayloadLength), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
1135 }
1136 if (header.PayloadLength > 0)
1137 {
1138 ConsumeFromBuffer((int)header.PayloadLength);
1139 }
1140 }
static int ApplyMask(Span< byte > toMask, byte[] mask, int maskOffset, int maskOffsetIndex)
ValueTask EnsureBufferContainsAsync(int minimumRequiredBytes, CancellationToken cancellationToken, bool throwOnPrematureClosure=true)
ValueTask SendFrameAsync(MessageOpcode opcode, bool endOfMessage, bool disableCompression, ReadOnlyMemory< byte > payloadBuffer, CancellationToken cancellationToken)
unsafe Span< T > Span
Definition Memory.cs:28
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)
Definition ValueTask.cs:312

References System.Net.WebSockets.ManagedWebSocket._isServer, System.Net.WebSockets.ManagedWebSocket._receiveBuffer, System.Net.WebSockets.ManagedWebSocket._receiveBufferCount, System.Net.WebSockets.ManagedWebSocket._receiveBufferOffset, System.Net.WebSockets.ManagedWebSocket.ApplyMask(), System.cancellationToken, System.Threading.Tasks.ValueTask< TResult >.ConfigureAwait(), System.Net.WebSockets.ManagedWebSocket.ConsumeFromBuffer(), System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(), System.Net.WebSockets.ManagedWebSocket.MessageHeader.Mask, System.Net.WebSockets.ManagedWebSocket.MessageHeader.Opcode, System.Net.WebSockets.ManagedWebSocket.MessageHeader.PayloadLength, System.Net.WebSockets.ManagedWebSocket.SendFrameAsync(), System.Memory< T >.Slice(), and System.Memory< T >.Span.

Referenced by System.Net.WebSockets.ManagedWebSocket._003CReceiveAsyncPrivate_003Ed__63< TResult >.MoveNext().