using System; using BestHTTP.Decompression.Zlib; using BestHTTP.Extensions; using BestHTTP.WebSocket.Frames; using Cpp2IlInjected; namespace BestHTTP.WebSocket.Extensions { // Token: 0x020019B1 RID: 6577 [Token(Token = "0x20019B1")] public sealed class PerMessageCompression : IExtension { // Token: 0x17001863 RID: 6243 // (get) Token: 0x0600993C RID: 39228 RVA: 0x001F5018 File Offset: 0x001F3218 // (set) Token: 0x0600993D RID: 39229 RVA: 0x001F502C File Offset: 0x001F322C [Token(Token = "0x17001863")] public bool ClientNoContextTakeover { [Token(Token = "0x600993C")] [Address(RVA = "0x4944B0", Offset = "0x4934B0", VA = "0x1804944B0")] get; [Token(Token = "0x600993D")] [Address(RVA = "0x62ADC0", Offset = "0x629DC0", VA = "0x18062ADC0")] private set; } // Token: 0x17001864 RID: 6244 // (get) Token: 0x0600993E RID: 39230 RVA: 0x001F5040 File Offset: 0x001F3240 // (set) Token: 0x0600993F RID: 39231 RVA: 0x001F5054 File Offset: 0x001F3254 [Token(Token = "0x17001864")] public bool ServerNoContextTakeover { [Token(Token = "0x600993E")] [Address(RVA = "0x498E20", Offset = "0x497E20", VA = "0x180498E20")] get; [Token(Token = "0x600993F")] [Address(RVA = "0x62FA00", Offset = "0x62EA00", VA = "0x18062FA00")] private set; } // Token: 0x17001865 RID: 6245 // (get) Token: 0x06009940 RID: 39232 RVA: 0x001F5068 File Offset: 0x001F3268 // (set) Token: 0x06009941 RID: 39233 RVA: 0x001F507C File Offset: 0x001F327C [Token(Token = "0x17001865")] public int ClientMaxWindowBits { [Token(Token = "0x6009940")] [Address(RVA = "0x4936D0", Offset = "0x4926D0", VA = "0x1804936D0")] get; [Token(Token = "0x6009941")] [Address(RVA = "0x5F1920", Offset = "0x5F0920", VA = "0x1805F1920")] private set; } // Token: 0x17001866 RID: 6246 // (get) Token: 0x06009942 RID: 39234 RVA: 0x001F5090 File Offset: 0x001F3290 // (set) Token: 0x06009943 RID: 39235 RVA: 0x001F50A4 File Offset: 0x001F32A4 [Token(Token = "0x17001866")] public int ServerMaxWindowBits { [Token(Token = "0x6009942")] [Address(RVA = "0x411540", Offset = "0x410540", VA = "0x180411540")] get; [Token(Token = "0x6009943")] [Address(RVA = "0x5F1910", Offset = "0x5F0910", VA = "0x1805F1910")] private set; } // Token: 0x17001867 RID: 6247 // (get) Token: 0x06009944 RID: 39236 RVA: 0x001F50B8 File Offset: 0x001F32B8 // (set) Token: 0x06009945 RID: 39237 RVA: 0x001F50CC File Offset: 0x001F32CC [Token(Token = "0x17001867")] public CompressionLevel Level { [Token(Token = "0x6009944")] [Address(RVA = "0x497590", Offset = "0x496590", VA = "0x180497590")] get; [Token(Token = "0x6009945")] [Address(RVA = "0x50A2B0", Offset = "0x5092B0", VA = "0x18050A2B0")] private set; } // Token: 0x17001868 RID: 6248 // (get) Token: 0x06009946 RID: 39238 RVA: 0x001F50E0 File Offset: 0x001F32E0 // (set) Token: 0x06009947 RID: 39239 RVA: 0x001F50F4 File Offset: 0x001F32F4 [Token(Token = "0x17001868")] public int MinimumDataLegthToCompress { [Token(Token = "0x6009946")] [Address(RVA = "0x470B70", Offset = "0x46FB70", VA = "0x180470B70")] get; [Token(Token = "0x6009947")] [Address(RVA = "0x62ADB0", Offset = "0x629DB0", VA = "0x18062ADB0")] set; } // Token: 0x06009948 RID: 39240 RVA: 0x001F5108 File Offset: 0x001F3308 [Token(Token = "0x6009948")] [Address(RVA = "0x62F9C0", Offset = "0x62E9C0", VA = "0x18062F9C0")] public PerMessageCompression() { this.Level = (CompressionLevel)((ulong)6L); this.ClientNoContextTakeover = false; this.ClientMaxWindowBits = (int)((ulong)15L); this.ServerMaxWindowBits = (int)((ulong)15L); this.MinimumDataLegthToCompress = (int)((ulong)256L); } // Token: 0x06009949 RID: 39241 RVA: 0x001F514C File Offset: 0x001F334C [Token(Token = "0x6009949")] [Address(RVA = "0x62F970", Offset = "0x62E970", VA = "0x18062F970")] public PerMessageCompression(CompressionLevel level, bool clientNoContextTakeover, bool serverNoContextTakeover, int desiredClientMaxWindowBits, int desiredServerMaxWindowBits, int minDatalengthToCompress) { this.ClientMaxWindowBits = 0; this.ServerMaxWindowBits = 0; this.Level = level; this.MinimumDataLegthToCompress = 0; this.ClientNoContextTakeover = clientNoContextTakeover; } // Token: 0x0600994A RID: 39242 RVA: 0x001F5184 File Offset: 0x001F3384 [Token(Token = "0x600994A")] [Address(RVA = "0x62EE20", Offset = "0x62DE20", VA = "0x18062EE20", Slot = "4")] public void AddNegotiation(HTTPRequest request) { if (this.k__BackingField) { string text = "permessage-deflate" + "; server_no_context_takeover"; } string text2; if (this.k__BackingField) { text2 = "permessage-deflate" + "; client_no_context_takeover"; } int num = this.k__BackingField; if (num == 15) { this.k__BackingField = num; } string text4; string text3 = text2 + "; server_max_window_bits=" + text4; if (this.k__BackingField == 15) { string text5 = text3 + "; client_max_window_bits"; this.k__BackingField = (int)((ulong)15L); } string text7; string text6 = text3 + "; client_max_window_bits=" + text7; request.AddHeader("Sec-WebSocket-Extensions", text6); } // Token: 0x0600994B RID: 39243 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600994B")] [Address(RVA = "0x62F5E0", Offset = "0x62E5E0", VA = "0x18062F5E0", Slot = "5")] public bool ParseNegotiation(WebSocketResponse resp) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600994C RID: 39244 RVA: 0x001F522C File Offset: 0x001F342C [Token(Token = "0x600994C")] [Address(RVA = "0x62F5A0", Offset = "0x62E5A0", VA = "0x18062F5A0", Slot = "6")] public byte GetFrameHeader(WebSocketFrame writer, byte inFlag) { WebSocketFrameTypes k__BackingField = writer.k__BackingField; if (writer.k__BackingField != 0) { int num = this.k__BackingField; } return inFlag; } // Token: 0x0600994D RID: 39245 RVA: 0x001F5258 File Offset: 0x001F3458 [Token(Token = "0x600994D")] [Address(RVA = "0x62F4F0", Offset = "0x62E4F0", VA = "0x18062F4F0", Slot = "7")] public byte[] Encode(WebSocketFrame writer) { byte[] k__BackingField = writer.k__BackingField; if (k__BackingField != 0) { return k__BackingField; } return VariableSizedBufferPool.NoData; } // Token: 0x0600994E RID: 39246 RVA: 0x001F5290 File Offset: 0x001F3490 [Token(Token = "0x600994E")] [Address(RVA = "0x62F1C0", Offset = "0x62E1C0", VA = "0x18062F1C0", Slot = "8")] public byte[] Decode(byte header, byte[] data, int length) { return this.Decompress(data, length); } // Token: 0x0600994F RID: 39247 RVA: 0x001F52A8 File Offset: 0x001F34A8 [Token(Token = "0x600994F")] [Address(RVA = "0x62EF50", Offset = "0x62DF50", VA = "0x18062EF50")] private byte[] Compress(byte[] data, int length) { int num; byte[] array; do { num = 0; if (this.compressorOutputStream == 0) { BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream(); this.compressorOutputStream = bufferPoolMemoryStream; } if (this.compressorDeflateStream == num) { CompressionLevel compressionLevel = this.k__BackingField; int num2 = this.k__BackingField; DeflateStream deflateStream; this.compressorDeflateStream = deflateStream; FlushType flushMode = deflateStream.FlushMode; } int num3 = this.compressorDeflateStream.ReadByte(); DeflateStream deflateStream2 = this.compressorDeflateStream; long position = this.compressorOutputStream.Position; bool canWrite = this.compressorOutputStream.CanWrite; array = this.compressorOutputStream.ToArray(); if (this.k__BackingField) { this.compressorDeflateStream.Dispose(); this.compressorDeflateStream = (ulong)0L; } } while (num != 0); return array; } // Token: 0x06009950 RID: 39248 RVA: 0x001F5388 File Offset: 0x001F3588 [Token(Token = "0x6009950")] [Address(RVA = "0x62F1E0", Offset = "0x62E1E0", VA = "0x18062F1E0")] private byte[] Decompress(byte[] data, int length) { BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream; if (bufferPoolMemoryStream == 0) { int num; BufferPoolMemoryStream bufferPoolMemoryStream2 = new BufferPoolMemoryStream(num); num = data.Length; num += 4; this.decompressorInputStream = bufferPoolMemoryStream2; } int num2 = bufferPoolMemoryStream.ReadByte(); BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorInputStream; byte[] trailer = PerMessageCompression.Trailer; int num3 = bufferPoolMemoryStream3.ReadByte(); long position = this.decompressorInputStream.Position; int num4 = 0; if (this.decompressorDeflateStream == num4) { BufferPoolMemoryStream bufferPoolMemoryStream4 = this.decompressorInputStream; int num5 = this.k__BackingField; ulong num6; DeflateStream deflateStream = new DeflateStream(bufferPoolMemoryStream4, CompressionMode.Decompress, CompressionLevel.Default, num6 != 0UL, num5); this.decompressorDeflateStream = deflateStream; FlushType flushMode = deflateStream.FlushMode; } if (this.decompressorOutputStream == 0) { BufferPoolMemoryStream bufferPoolMemoryStream5 = new BufferPoolMemoryStream(); this.decompressorOutputStream = bufferPoolMemoryStream5; } uint num7; ulong num8; byte[] array = VariableSizedBufferPool.Get((long)num7, num8 != 0UL); DeflateStream deflateStream2 = this.decompressorDeflateStream; int num9 = this.decompressorOutputStream.ReadByte(); VariableSizedBufferPool.Release(array); DeflateStream deflateStream3 = this.decompressorDeflateStream; byte[] array2 = this.decompressorOutputStream.ToArray(); if ((this.k__BackingField ? 1 : 0) != num4) { this.decompressorDeflateStream.Dispose(); this.decompressorDeflateStream = num4; } return array2; } // Token: 0x06009951 RID: 39249 RVA: 0x001F549C File Offset: 0x001F369C // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x6009951")] [Address(RVA = "0x62F8E0", Offset = "0x62E8E0", VA = "0x18062F8E0")] static PerMessageCompression() { byte[] array = new byte[4]; array[0] = (byte)((ulong)255L); array[0] = (byte)((ulong)255L); PerMessageCompression.Trailer = array; } // Token: 0x040067A5 RID: 26533 [Token(Token = "0x40067A5")] public const int MinDataLengthToCompressDefault = 256; // Token: 0x040067A6 RID: 26534 [Token(Token = "0x40067A6")] private static readonly byte[] Trailer; // Token: 0x040067AD RID: 26541 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40067AD")] private BufferPoolMemoryStream compressorOutputStream; // Token: 0x040067AE RID: 26542 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40067AE")] private DeflateStream compressorDeflateStream; // Token: 0x040067AF RID: 26543 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40067AF")] private BufferPoolMemoryStream decompressorInputStream; // Token: 0x040067B0 RID: 26544 [FieldOffset(Offset = "0x40")] [Token(Token = "0x40067B0")] private BufferPoolMemoryStream decompressorOutputStream; // Token: 0x040067B1 RID: 26545 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40067B1")] private DeflateStream decompressorDeflateStream; } }