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

◆ WriteFrameToSendBuffer()

int System.Net.WebSockets.ManagedWebSocket.WriteFrameToSendBuffer ( MessageOpcode opcode,
bool endOfMessage,
bool disableCompression,
ReadOnlySpan< byte > payloadBuffer )
inlineprivate

Definition at line 931 of file ManagedWebSocket.cs.

932 {
933 if (_deflater != null && !disableCompression)
934 {
935 payloadBuffer = _deflater.Deflate(payloadBuffer, endOfMessage);
936 }
937 int length = payloadBuffer.Length;
939 int? num = null;
940 int num2;
941 if (_isServer)
942 {
943 num2 = WriteHeader(opcode, _sendBuffer, payloadBuffer, endOfMessage, useMask: false, _deflater != null && !disableCompression);
944 }
945 else
946 {
947 num = WriteHeader(opcode, _sendBuffer, payloadBuffer, endOfMessage, useMask: true, _deflater != null && !disableCompression);
948 num2 = num.GetValueOrDefault() + 4;
949 }
950 if (payloadBuffer.Length > 0)
951 {
952 payloadBuffer.CopyTo(new Span<byte>(_sendBuffer, num2, length));
954 if (num.HasValue)
955 {
956 ApplyMask(new Span<byte>(_sendBuffer, num2, length), _sendBuffer, num.Value, 0);
957 }
958 }
959 return num2 + length;
960 }
ReadOnlySpan< byte > Deflate(ReadOnlySpan< byte > payload, bool endOfMessage)
static int WriteHeader(MessageOpcode opcode, byte[] sendBuffer, ReadOnlySpan< byte > payload, bool endOfMessage, bool useMask, bool compressed)
static int ApplyMask(Span< byte > toMask, byte[] mask, int maskOffset, int maskOffsetIndex)
void CopyTo(Span< T > destination)

References System.Net.WebSockets.ManagedWebSocket._deflater, System.Net.WebSockets.ManagedWebSocket._isServer, System.Net.WebSockets.ManagedWebSocket._sendBuffer, System.Net.WebSockets.ManagedWebSocket.AllocateSendBuffer(), System.Net.WebSockets.ManagedWebSocket.ApplyMask(), System.ReadOnlySpan< T >.CopyTo(), System.Net.WebSockets.Compression.WebSocketDeflater.Deflate(), System.length, System.ReadOnlySpan< T >.Length, System.Net.WebSockets.Compression.WebSocketDeflater.ReleaseBuffer(), and System.Net.WebSockets.ManagedWebSocket.WriteHeader().

Referenced by System.Net.WebSockets.ManagedWebSocket.SendFrameFallbackAsync(), and System.Net.WebSockets.ManagedWebSocket.SendFrameLockAcquiredNonCancelableAsync().