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

◆ Deflate() [1/2]

ReadOnlySpan< byte > System.Net.WebSockets.Compression.WebSocketDeflater.Deflate ( ReadOnlySpan< byte > payload,
bool endOfMessage )
inline

Definition at line 41 of file WebSocketDeflater.cs.

42 {
43 _buffer = ArrayPool<byte>.Shared.Rent(Math.Max(payload.Length, 4096));
44 int num = 0;
45 while (true)
46 {
47 DeflatePrivate(payload, _buffer.AsSpan(num), endOfMessage, out var consumed, out var written, out var needsMoreOutput);
48 num += written;
49 if (!needsMoreOutput)
50 {
51 break;
52 }
53 payload = payload.Slice(consumed);
54 byte[] array = ArrayPool<byte>.Shared.Rent((int)((double)_buffer.Length * 1.3));
55 _buffer.AsSpan(0, num).CopyTo(array);
56 byte[] buffer = _buffer;
57 _buffer = array;
59 }
60 return new ReadOnlySpan<byte>(_buffer, 0, num);
61 }
static ArrayPool< T > Shared
Definition ArrayPool.cs:7
void DeflatePrivate(ReadOnlySpan< byte > payload, Span< byte > output, bool endOfMessage, out int consumed, out int written, out bool needsMoreOutput)
ReadOnlySpan< T > Slice(int start)

References System.Net.WebSockets.Compression.WebSocketDeflater._buffer, System.array, System.buffer, System.Net.WebSockets.Compression.WebSocketDeflater.DeflatePrivate(), System.ReadOnlySpan< T >.Length, System.Math.Max(), System.Buffers.ArrayPool< T >.Shared, and System.ReadOnlySpan< T >.Slice().

Referenced by System.Net.WebSockets.ManagedWebSocket.WriteFrameToSendBuffer().