This commit is contained in:
niko
2026-04-11 22:19:20 +02:00
parent 45b857ff11
commit 8fc35183db
17034 changed files with 2863552 additions and 0 deletions
@@ -0,0 +1,36 @@
using System;
using BestHTTP.WebSocket.Frames;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Extensions
{
// Token: 0x020018D0 RID: 6352
[Token(Token = "0x20018D0")]
public interface IExtension
{
// Token: 0x06009569 RID: 38249
[Token(Token = "0x6009569")]
[Address(Slot = "0")]
void AddNegotiation(HTTPRequest request);
// Token: 0x0600956A RID: 38250
[Token(Token = "0x600956A")]
[Address(Slot = "1")]
bool ParseNegotiation(WebSocketResponse resp);
// Token: 0x0600956B RID: 38251
[Token(Token = "0x600956B")]
[Address(Slot = "2")]
byte GetFrameHeader(WebSocketFrame writer, byte inFlag);
// Token: 0x0600956C RID: 38252
[Token(Token = "0x600956C")]
[Address(Slot = "3")]
byte[] Encode(WebSocketFrame writer);
// Token: 0x0600956D RID: 38253
[Token(Token = "0x600956D")]
[Address(Slot = "4")]
byte[] Decode(byte header, byte[] data, int length);
}
}
@@ -0,0 +1,327 @@
using System;
using BestHTTP.Decompression.Zlib;
using BestHTTP.Extensions;
using BestHTTP.WebSocket.Frames;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Extensions
{
// Token: 0x020018D1 RID: 6353
[Token(Token = "0x20018D1")]
public sealed class PerMessageCompression : IExtension
{
// Token: 0x170017C6 RID: 6086
// (get) Token: 0x0600956E RID: 38254 RVA: 0x001EBF7C File Offset: 0x001EA17C
// (set) Token: 0x0600956F RID: 38255 RVA: 0x001EBF90 File Offset: 0x001EA190
[Token(Token = "0x170017C6")]
public bool ClientNoContextTakeover
{
[Token(Token = "0x600956E")]
[Address(RVA = "0x42D5E0", Offset = "0x42C3E0", VA = "0x18042D5E0")]
get;
[Token(Token = "0x600956F")]
[Address(RVA = "0x495D50", Offset = "0x494B50", VA = "0x180495D50")]
private set;
}
// Token: 0x170017C7 RID: 6087
// (get) Token: 0x06009570 RID: 38256 RVA: 0x001EBFA4 File Offset: 0x001EA1A4
// (set) Token: 0x06009571 RID: 38257 RVA: 0x001EBFB8 File Offset: 0x001EA1B8
[Token(Token = "0x170017C7")]
public bool ServerNoContextTakeover
{
[Token(Token = "0x6009570")]
[Address(RVA = "0x49E540", Offset = "0x49D340", VA = "0x18049E540")]
get;
[Token(Token = "0x6009571")]
[Address(RVA = "0x756A50", Offset = "0x755850", VA = "0x180756A50")]
private set;
}
// Token: 0x170017C8 RID: 6088
// (get) Token: 0x06009572 RID: 38258 RVA: 0x001EBFCC File Offset: 0x001EA1CC
// (set) Token: 0x06009573 RID: 38259 RVA: 0x001EBFE0 File Offset: 0x001EA1E0
[Token(Token = "0x170017C8")]
public int ClientMaxWindowBits
{
[Token(Token = "0x6009572")]
[Address(RVA = "0x495080", Offset = "0x493E80", VA = "0x180495080")]
get;
[Token(Token = "0x6009573")]
[Address(RVA = "0x52EC20", Offset = "0x52DA20", VA = "0x18052EC20")]
private set;
}
// Token: 0x170017C9 RID: 6089
// (get) Token: 0x06009574 RID: 38260 RVA: 0x001EBFF4 File Offset: 0x001EA1F4
// (set) Token: 0x06009575 RID: 38261 RVA: 0x001EC008 File Offset: 0x001EA208
[Token(Token = "0x170017C9")]
public int ServerMaxWindowBits
{
[Token(Token = "0x6009574")]
[Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720")]
get;
[Token(Token = "0x6009575")]
[Address(RVA = "0x41F740", Offset = "0x41E540", VA = "0x18041F740")]
private set;
}
// Token: 0x170017CA RID: 6090
// (get) Token: 0x06009576 RID: 38262 RVA: 0x001EC01C File Offset: 0x001EA21C
// (set) Token: 0x06009577 RID: 38263 RVA: 0x001EC030 File Offset: 0x001EA230
[Token(Token = "0x170017CA")]
public CompressionLevel Level
{
[Token(Token = "0x6009576")]
[Address(RVA = "0x41F5B0", Offset = "0x41E3B0", VA = "0x18041F5B0")]
get;
[Token(Token = "0x6009577")]
[Address(RVA = "0x41F730", Offset = "0x41E530", VA = "0x18041F730")]
private set;
}
// Token: 0x170017CB RID: 6091
// (get) Token: 0x06009578 RID: 38264 RVA: 0x001EC044 File Offset: 0x001EA244
// (set) Token: 0x06009579 RID: 38265 RVA: 0x001EC058 File Offset: 0x001EA258
[Token(Token = "0x170017CB")]
public int MinimumDataLegthToCompress
{
[Token(Token = "0x6009578")]
[Address(RVA = "0x3F7310", Offset = "0x3F6110", VA = "0x1803F7310")]
get;
[Token(Token = "0x6009579")]
[Address(RVA = "0x420360", Offset = "0x41F160", VA = "0x180420360")]
set;
}
// Token: 0x0600957A RID: 38266 RVA: 0x001EC06C File Offset: 0x001EA26C
[Token(Token = "0x600957A")]
[Address(RVA = "0x1C3C490", Offset = "0x1C3B290", VA = "0x181C3C490")]
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: 0x0600957B RID: 38267 RVA: 0x001EC0B0 File Offset: 0x001EA2B0
[Token(Token = "0x600957B")]
[Address(RVA = "0x1C3C440", Offset = "0x1C3B240", VA = "0x181C3C440")]
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: 0x0600957C RID: 38268 RVA: 0x001EC0E8 File Offset: 0x001EA2E8
[Token(Token = "0x600957C")]
[Address(RVA = "0x1C3B8F0", Offset = "0x1C3A6F0", VA = "0x181C3B8F0", Slot = "4")]
public void AddNegotiation(HTTPRequest request)
{
if (this.<ServerNoContextTakeover>k__BackingField)
{
string text = "permessage-deflate" + "; server_no_context_takeover";
}
string text2;
if (this.<ClientNoContextTakeover>k__BackingField)
{
text2 = "permessage-deflate" + "; client_no_context_takeover";
}
int num = this.<ServerMaxWindowBits>k__BackingField;
if (num == 15)
{
this.<ServerMaxWindowBits>k__BackingField = num;
}
string text4;
string text3 = text2 + "; server_max_window_bits=" + text4;
if (this.<ClientMaxWindowBits>k__BackingField == 15)
{
string text5 = text3 + "; client_max_window_bits";
this.<ClientMaxWindowBits>k__BackingField = (int)((ulong)15L);
}
string text7;
string text6 = text3 + "; client_max_window_bits=" + text7;
request.AddHeader("Sec-WebSocket-Extensions", text6);
}
// Token: 0x0600957D RID: 38269 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600957D")]
[Address(RVA = "0x1C3C0B0", Offset = "0x1C3AEB0", VA = "0x181C3C0B0", Slot = "5")]
public bool ParseNegotiation(WebSocketResponse resp)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600957E RID: 38270 RVA: 0x001EC190 File Offset: 0x001EA390
[Token(Token = "0x600957E")]
[Address(RVA = "0x1C3C070", Offset = "0x1C3AE70", VA = "0x181C3C070", Slot = "6")]
public byte GetFrameHeader(WebSocketFrame writer, byte inFlag)
{
WebSocketFrameTypes <Type>k__BackingField = writer.<Type>k__BackingField;
if (writer.<Data>k__BackingField != 0)
{
int num = this.<MinimumDataLegthToCompress>k__BackingField;
}
return inFlag;
}
// Token: 0x0600957F RID: 38271 RVA: 0x001EC1BC File Offset: 0x001EA3BC
[Token(Token = "0x600957F")]
[Address(RVA = "0x1C3BFC0", Offset = "0x1C3ADC0", VA = "0x181C3BFC0", Slot = "7")]
public byte[] Encode(WebSocketFrame writer)
{
byte[] <Data>k__BackingField = writer.<Data>k__BackingField;
if (<Data>k__BackingField != 0)
{
return <Data>k__BackingField;
}
return VariableSizedBufferPool.NoData;
}
// Token: 0x06009580 RID: 38272 RVA: 0x001EC1F4 File Offset: 0x001EA3F4
[Token(Token = "0x6009580")]
[Address(RVA = "0x1C3BC90", Offset = "0x1C3AA90", VA = "0x181C3BC90", Slot = "8")]
public byte[] Decode(byte header, byte[] data, int length)
{
return this.Decompress(data, length);
}
// Token: 0x06009581 RID: 38273 RVA: 0x001EC20C File Offset: 0x001EA40C
[Token(Token = "0x6009581")]
[Address(RVA = "0x1C3BA20", Offset = "0x1C3A820", VA = "0x181C3BA20")]
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.<Level>k__BackingField;
int num2 = this.<ClientMaxWindowBits>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.<ClientNoContextTakeover>k__BackingField)
{
this.compressorDeflateStream.Dispose();
this.compressorDeflateStream = (ulong)0L;
}
}
while (num != 0);
return array;
}
// Token: 0x06009582 RID: 38274 RVA: 0x001EC2EC File Offset: 0x001EA4EC
[Token(Token = "0x6009582")]
[Address(RVA = "0x1C3BCB0", Offset = "0x1C3AAB0", VA = "0x181C3BCB0")]
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.<ServerMaxWindowBits>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.<ServerNoContextTakeover>k__BackingField ? 1 : 0) != num4)
{
this.decompressorDeflateStream.Dispose();
this.decompressorDeflateStream = num4;
}
return array2;
}
// Token: 0x06009583 RID: 38275 RVA: 0x001EC400 File Offset: 0x001EA600
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x6009583")]
[Address(RVA = "0x1C3C3B0", Offset = "0x1C3B1B0", VA = "0x181C3C3B0")]
static PerMessageCompression()
{
byte[] array = new byte[4];
array[0] = (byte)((ulong)255L);
array[0] = (byte)((ulong)255L);
PerMessageCompression.Trailer = array;
}
// Token: 0x040065EC RID: 26092
[Token(Token = "0x40065EC")]
public const int MinDataLengthToCompressDefault = 256;
// Token: 0x040065ED RID: 26093
[Token(Token = "0x40065ED")]
private static readonly byte[] Trailer;
// Token: 0x040065F4 RID: 26100
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x40065F4")]
private BufferPoolMemoryStream compressorOutputStream;
// Token: 0x040065F5 RID: 26101
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x40065F5")]
private DeflateStream compressorDeflateStream;
// Token: 0x040065F6 RID: 26102
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x40065F6")]
private BufferPoolMemoryStream decompressorInputStream;
// Token: 0x040065F7 RID: 26103
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x40065F7")]
private BufferPoolMemoryStream decompressorOutputStream;
// Token: 0x040065F8 RID: 26104
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x40065F8")]
private DeflateStream decompressorDeflateStream;
}
}
@@ -0,0 +1,36 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Frames
{
// Token: 0x020018CC RID: 6348
[Token(Token = "0x20018CC")]
public struct RawFrameData : IDisposable
{
// Token: 0x06009543 RID: 38211 RVA: 0x001EB91C File Offset: 0x001E9B1C
[Token(Token = "0x6009543")]
[Address(RVA = "0x4C4D80", Offset = "0x4C3B80", VA = "0x1804C4D80")]
public RawFrameData(byte[] data, int length)
{
this.Data = data;
this.Length = length;
}
// Token: 0x06009544 RID: 38212 RVA: 0x001EB938 File Offset: 0x001E9B38
[Token(Token = "0x6009544")]
[Address(RVA = "0x1C3C4D0", Offset = "0x1C3B2D0", VA = "0x181C3C4D0", Slot = "4")]
public void Dispose()
{
}
// Token: 0x040065D6 RID: 26070
[FieldOffset(Offset = "0x0")]
[Token(Token = "0x40065D6")]
public byte[] Data;
// Token: 0x040065D7 RID: 26071
[FieldOffset(Offset = "0x8")]
[Token(Token = "0x40065D7")]
public int Length;
}
}
@@ -0,0 +1,228 @@
using System;
using BestHTTP.Extensions;
using BestHTTP.WebSocket.Extensions;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Frames
{
// Token: 0x020018CD RID: 6349
[Token(Token = "0x20018CD")]
public sealed class WebSocketFrame
{
// Token: 0x170017B9 RID: 6073
// (get) Token: 0x06009545 RID: 38213 RVA: 0x001EB948 File Offset: 0x001E9B48
// (set) Token: 0x06009546 RID: 38214 RVA: 0x001EB95C File Offset: 0x001E9B5C
[Token(Token = "0x170017B9")]
public WebSocketFrameTypes Type
{
[Token(Token = "0x6009545")]
[Address(RVA = "0x42D5E0", Offset = "0x42C3E0", VA = "0x18042D5E0")]
get;
[Token(Token = "0x6009546")]
[Address(RVA = "0x495D50", Offset = "0x494B50", VA = "0x180495D50")]
private set;
}
// Token: 0x170017BA RID: 6074
// (get) Token: 0x06009547 RID: 38215 RVA: 0x001EB970 File Offset: 0x001E9B70
// (set) Token: 0x06009548 RID: 38216 RVA: 0x001EB984 File Offset: 0x001E9B84
[Token(Token = "0x170017BA")]
public bool IsFinal
{
[Token(Token = "0x6009547")]
[Address(RVA = "0x49E540", Offset = "0x49D340", VA = "0x18049E540")]
get;
[Token(Token = "0x6009548")]
[Address(RVA = "0x756A50", Offset = "0x755850", VA = "0x180756A50")]
private set;
}
// Token: 0x170017BB RID: 6075
// (get) Token: 0x06009549 RID: 38217 RVA: 0x001EB998 File Offset: 0x001E9B98
// (set) Token: 0x0600954A RID: 38218 RVA: 0x001EB9AC File Offset: 0x001E9BAC
[Token(Token = "0x170017BB")]
public byte Header
{
[Token(Token = "0x6009549")]
[Address(RVA = "0x49E550", Offset = "0x49D350", VA = "0x18049E550")]
get;
[Token(Token = "0x600954A")]
[Address(RVA = "0x756E70", Offset = "0x755C70", VA = "0x180756E70")]
private set;
}
// Token: 0x170017BC RID: 6076
// (get) Token: 0x0600954B RID: 38219 RVA: 0x001EB9C0 File Offset: 0x001E9BC0
// (set) Token: 0x0600954C RID: 38220 RVA: 0x001EB9D4 File Offset: 0x001E9BD4
[Token(Token = "0x170017BC")]
public byte[] Data
{
[Token(Token = "0x600954B")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
get;
[Token(Token = "0x600954C")]
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
private set;
}
// Token: 0x170017BD RID: 6077
// (get) Token: 0x0600954D RID: 38221 RVA: 0x001EB9E8 File Offset: 0x001E9BE8
// (set) Token: 0x0600954E RID: 38222 RVA: 0x001EB9FC File Offset: 0x001E9BFC
[Token(Token = "0x170017BD")]
public int DataLength
{
[Token(Token = "0x600954D")]
[Address(RVA = "0x3F7310", Offset = "0x3F6110", VA = "0x1803F7310")]
get;
[Token(Token = "0x600954E")]
[Address(RVA = "0x420360", Offset = "0x41F160", VA = "0x180420360")]
private set;
}
// Token: 0x170017BE RID: 6078
// (get) Token: 0x0600954F RID: 38223 RVA: 0x001EBA10 File Offset: 0x001E9C10
// (set) Token: 0x06009550 RID: 38224 RVA: 0x001EBA24 File Offset: 0x001E9C24
[Token(Token = "0x170017BE")]
public bool UseExtensions
{
[Token(Token = "0x600954F")]
[Address(RVA = "0x431BC0", Offset = "0x4309C0", VA = "0x180431BC0")]
get;
[Token(Token = "0x6009550")]
[Address(RVA = "0x431D60", Offset = "0x430B60", VA = "0x180431D60")]
private set;
}
// Token: 0x06009551 RID: 38225 RVA: 0x001EBA38 File Offset: 0x001E9C38
[Token(Token = "0x6009551")]
[Address(RVA = "0x1C41980", Offset = "0x1C40780", VA = "0x181C41980")]
public WebSocketFrame(WebSocket webSocket, WebSocketFrameTypes type, byte[] data)
{
if (data != 0)
{
}
}
// Token: 0x06009552 RID: 38226 RVA: 0x001EBA54 File Offset: 0x001E9C54
[Token(Token = "0x6009552")]
[Address(RVA = "0x1C418D0", Offset = "0x1C406D0", VA = "0x181C418D0")]
public WebSocketFrame(WebSocket webSocket, WebSocketFrameTypes type, byte[] data, bool useExtensions)
{
if (data != 0)
{
}
}
// Token: 0x06009553 RID: 38227 RVA: 0x001EBA70 File Offset: 0x001E9C70
[Token(Token = "0x6009553")]
[Address(RVA = "0x1C41920", Offset = "0x1C40720", VA = "0x181C41920")]
public WebSocketFrame(WebSocket webSocket, WebSocketFrameTypes type, byte[] data, bool isFinal, bool useExtensions)
{
if (data != 0)
{
}
}
// Token: 0x06009554 RID: 38228 RVA: 0x001EBA8C File Offset: 0x001E9C8C
[Token(Token = "0x6009554")]
[Address(RVA = "0x1C416E0", Offset = "0x1C404E0", VA = "0x181C416E0")]
public WebSocketFrame(WebSocket webSocket, WebSocketFrameTypes type, byte[] data, ulong pos, ulong length, bool isFinal, bool useExtensions)
{
this.IsFinal = false;
this.Type = type;
int num = 0;
this.UseExtensions = false;
this.DataLength = 0;
if (data == 0)
{
}
int num2 = this.<DataLength>k__BackingField;
byte[] array;
this.Data = array;
this.Header = data;
if ((this.<UseExtensions>k__BackingField ? 1 : 0) != num && webSocket != 0 && webSocket.<Extensions>k__BackingField != num)
{
IExtension[] <Extensions>k__BackingField = webSocket.<Extensions>k__BackingField;
int length2 = <Extensions>k__BackingField.Length;
if (num < length2)
{
if (<Extensions>k__BackingField[num] != 0)
{
byte b = this.<Header>k__BackingField;
this.Header = (byte)num;
byte[] array2 = this.<Data>k__BackingField;
if (num != array2)
{
VariableSizedBufferPool.Release(array2);
this.Data = num;
this.DataLength = num;
}
}
num++;
}
}
}
// Token: 0x06009555 RID: 38229 RVA: 0x001EBB48 File Offset: 0x001E9D48
[Token(Token = "0x6009555")]
[Address(RVA = "0x1C41310", Offset = "0x1C40110", VA = "0x181C41310")]
public RawFrameData Get()
{
int num;
do
{
num = 0;
byte[] noData = VariableSizedBufferPool.NoData;
byte[] array;
int length = array.Length;
int num2 = 0;
Array.Reverse(array, num2, length);
byte[] array2;
int length2 = array2.Length;
int num3 = 0;
Array.Reverse(array2, num3, length2);
BufferPoolMemoryStream bufferPoolMemoryStream;
int num4 = bufferPoolMemoryStream.ReadByte();
int num5 = bufferPoolMemoryStream.ReadByte();
if (num < "{il2cpp array field il2cppMethodInfo->}")
{
num++;
num++;
}
byte[] array3 = bufferPoolMemoryStream.ToArray(true);
bool canWrite = bufferPoolMemoryStream.CanWrite;
if (bufferPoolMemoryStream != 0)
{
}
}
while (num != 0);
throw new NullReferenceException();
}
// Token: 0x06009556 RID: 38230 RVA: 0x001EBBF8 File Offset: 0x001E9DF8
[Token(Token = "0x6009556")]
[Address(RVA = "0x1C41110", Offset = "0x1C3FF10", VA = "0x181C41110")]
public WebSocketFrame[] Fragment(ushort maxFragmentSize)
{
if (this.<Data>k__BackingField != (ulong)0L)
{
WebSocketFrameTypes webSocketFrameTypes = this.<Type>k__BackingField;
if (this.<DataLength>k__BackingField > (int)maxFragmentSize)
{
WebSocketFrame[] array = new WebSocketFrame[(int)maxFragmentSize];
int num = this.<DataLength>k__BackingField;
if ((int)maxFragmentSize < num)
{
num -= (int)maxFragmentSize;
ulong num2 = Math.Min((ulong)maxFragmentSize, (ulong)num);
int num3 = this.<DataLength>k__BackingField;
throw new ArrayTypeMismatchException();
}
this.<DataLength>k__BackingField = (int)maxFragmentSize;
return array;
}
}
throw new IndexOutOfRangeException();
}
}
}
@@ -0,0 +1,266 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
using BestHTTP.Extensions;
using BestHTTP.WebSocket.Extensions;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Frames
{
// Token: 0x020018CE RID: 6350
[Token(Token = "0x20018CE")]
public struct WebSocketFrameReader
{
// Token: 0x170017BF RID: 6079
// (get) Token: 0x06009557 RID: 38231 RVA: 0x0000220F File Offset: 0x0000040F
// (set) Token: 0x06009558 RID: 38232 RVA: 0x001EBC7C File Offset: 0x001E9E7C
[Token(Token = "0x170017BF")]
public byte Header
{
[Token(Token = "0x6009557")]
[Address(RVA = "0x60EA40", Offset = "0x60D840", VA = "0x18060EA40")]
[CompilerGenerated]
get
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
[Token(Token = "0x6009558")]
[Address(RVA = "0x737850", Offset = "0x736650", VA = "0x180737850")]
[CompilerGenerated]
private set
{
this.<Header>k__BackingField = value;
}
}
// Token: 0x170017C0 RID: 6080
// (get) Token: 0x06009559 RID: 38233 RVA: 0x001EBC90 File Offset: 0x001E9E90
// (set) Token: 0x0600955A RID: 38234 RVA: 0x001EBCA4 File Offset: 0x001E9EA4
[Token(Token = "0x170017C0")]
public bool IsFinal
{
[Token(Token = "0x6009559")]
[Address(RVA = "0x60EA30", Offset = "0x60D830", VA = "0x18060EA30")]
get;
[Token(Token = "0x600955A")]
[Address(RVA = "0x16AC720", Offset = "0x16AB520", VA = "0x1816AC720")]
private set;
}
// Token: 0x170017C1 RID: 6081
// (get) Token: 0x0600955B RID: 38235 RVA: 0x001EBCB8 File Offset: 0x001E9EB8
// (set) Token: 0x0600955C RID: 38236 RVA: 0x001EBCCC File Offset: 0x001E9ECC
[Token(Token = "0x170017C1")]
public WebSocketFrameTypes Type
{
[Token(Token = "0x600955B")]
[Address(RVA = "0x16AC6A0", Offset = "0x16AB4A0", VA = "0x1816AC6A0")]
get;
[Token(Token = "0x600955C")]
[Address(RVA = "0x16AC6C0", Offset = "0x16AB4C0", VA = "0x1816AC6C0")]
private set;
}
// Token: 0x170017C2 RID: 6082
// (get) Token: 0x0600955D RID: 38237 RVA: 0x001EBCE0 File Offset: 0x001E9EE0
// (set) Token: 0x0600955E RID: 38238 RVA: 0x001EBCF4 File Offset: 0x001E9EF4
[Token(Token = "0x170017C2")]
public bool HasMask
{
[Token(Token = "0x600955D")]
[Address(RVA = "0x164B1F0", Offset = "0x1649FF0", VA = "0x18164B1F0")]
get;
[Token(Token = "0x600955E")]
[Address(RVA = "0x16AC6B0", Offset = "0x16AB4B0", VA = "0x1816AC6B0")]
private set;
}
// Token: 0x170017C3 RID: 6083
// (get) Token: 0x0600955F RID: 38239 RVA: 0x001EBD08 File Offset: 0x001E9F08
// (set) Token: 0x06009560 RID: 38240 RVA: 0x001EBD1C File Offset: 0x001E9F1C
[Token(Token = "0x170017C3")]
public ulong Length
{
[Token(Token = "0x600955F")]
[Address(RVA = "0x57C630", Offset = "0x57B430", VA = "0x18057C630")]
get;
[Token(Token = "0x6009560")]
[Address(RVA = "0x737860", Offset = "0x736660", VA = "0x180737860")]
private set;
}
// Token: 0x170017C4 RID: 6084
// (get) Token: 0x06009561 RID: 38241 RVA: 0x001EBD30 File Offset: 0x001E9F30
// (set) Token: 0x06009562 RID: 38242 RVA: 0x001EBD44 File Offset: 0x001E9F44
[Token(Token = "0x170017C4")]
public byte[] Data
{
[Token(Token = "0x6009561")]
[Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")]
get;
[Token(Token = "0x6009562")]
[Address(RVA = "0x3F7200", Offset = "0x3F6000", VA = "0x1803F7200")]
private set;
}
// Token: 0x170017C5 RID: 6085
// (get) Token: 0x06009563 RID: 38243 RVA: 0x001EBD58 File Offset: 0x001E9F58
// (set) Token: 0x06009564 RID: 38244 RVA: 0x001EBD6C File Offset: 0x001E9F6C
[Token(Token = "0x170017C5")]
public string DataAsText
{
[Token(Token = "0x6009563")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
get;
[Token(Token = "0x6009564")]
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
private set;
}
// Token: 0x06009565 RID: 38245 RVA: 0x001EBD80 File Offset: 0x001E9F80
[Token(Token = "0x6009565")]
[Address(RVA = "0x1C40BC0", Offset = "0x1C3F9C0", VA = "0x181C40BC0")]
internal void Read(Stream stream)
{
int num;
this.<Header>k__BackingField = (byte)num;
this.<IsFinal>k__BackingField = stream != null;
this.<Type>k__BackingField = (WebSocketFrameTypes)num;
this.<HasMask>k__BackingField = stream != null;
int num2;
this.<Length>k__BackingField = (ulong)num2;
if (num2 != 126)
{
if (num2 != 127)
{
goto IL_81;
}
byte[] array;
stream.ReadBuffer(array, 8);
int num3 = 0;
Array.Reverse(array, num3, 8);
int num4 = 0;
ulong num5 = BitConverter.ToUInt64(array, num4);
}
byte[] array2;
stream.ReadBuffer(array2, 2);
int num6 = 0;
Array.Reverse(array2, num6, 2);
int num7 = 0;
ushort num8 = BitConverter.ToUInt16(array2, num7);
this.<Length>k__BackingField = (ulong)num8;
VariableSizedBufferPool.Release(array2);
IL_81:
int num9 = 0;
if ((this.<HasMask>k__BackingField ? 1 : 0) != num9)
{
}
ulong num10 = this.<Length>k__BackingField;
if (num10 != (ulong)0L)
{
ulong num11;
if (num10 > num11)
{
throw new OverflowException();
}
byte[] array3 = new byte[num10];
}
ulong num12;
byte[] array4 = VariableSizedBufferPool.Get((long)this.<Length>k__BackingField, num12 != 0UL);
this.<Data>k__BackingField = array4;
ulong num13 = this.<Length>k__BackingField;
if (num13 != (ulong)0L)
{
num13 -= (ulong)num9;
ulong num14 = this.<Length>k__BackingField;
if ((this.<HasMask>k__BackingField ? 1 : 0) != num9)
{
if (num14 != (ulong)0L)
{
byte[] array5 = this.<Data>k__BackingField;
num9++;
}
byte[] array6;
VariableSizedBufferPool.Release(array6);
}
}
}
// Token: 0x06009566 RID: 38246 RVA: 0x001EBEA0 File Offset: 0x001EA0A0
[Token(Token = "0x6009566")]
[Address(RVA = "0x1C40B50", Offset = "0x1C3F950", VA = "0x181C40B50")]
private byte ReadByte(Stream stream)
{
/*
An exception occurred when decompiling this method (06009566)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Byte BestHTTP.WebSocket.Frames.WebSocketFrameReader::ReadByte(System.IO.Stream)
---> System.Exception: Basic block has to end with unconditional control flow.
{
Block_0:
stloc:Exception(var_2_07, call:Exception(ExceptionHelper::ServerClosedTCPStream))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1660
*/;
}
// Token: 0x06009567 RID: 38247 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x6009567")]
[Address(RVA = "0x1C406E0", Offset = "0x1C3F4E0", VA = "0x181C406E0")]
public void Assemble(List<WebSocketFrameReader> fragments)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06009568 RID: 38248 RVA: 0x001EBEB4 File Offset: 0x001EA0B4
[Token(Token = "0x6009568")]
[Address(RVA = "0x1C409A0", Offset = "0x1C3F7A0", VA = "0x181C409A0")]
public void DecodeWithExtensions(WebSocket webSocket)
{
if (webSocket.<Extensions>k__BackingField != (ulong)0L)
{
int num = 0;
int num2 = 0;
IExtension[] <Extensions>k__BackingField = webSocket.<Extensions>k__BackingField;
int length = <Extensions>k__BackingField.Length;
if (num2 < length)
{
if (<Extensions>k__BackingField[num] != 0)
{
ulong num3 = this.<Length>k__BackingField;
byte[] array = this.<Data>k__BackingField;
byte[] array2 = this.<Data>k__BackingField;
if (array2 != array)
{
VariableSizedBufferPool.Release(array2);
this.<Data>k__BackingField = array;
int length2 = array.Length;
this.<Length>k__BackingField = (ulong)length2;
}
}
num++;
}
}
if (this.<Data>k__BackingField != (ulong)0L)
{
Encoding utf = Encoding.UTF8;
byte[] array3 = this.<Data>k__BackingField;
string @string = utf.GetString(array3);
byte[] array4 = this.<Data>k__BackingField;
this.<DataAsText>k__BackingField = @string;
VariableSizedBufferPool.Release(array4);
this.<Data>k__BackingField = (ulong)0L;
}
}
}
}
@@ -0,0 +1,29 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket.Frames
{
// Token: 0x020018CF RID: 6351
[Token(Token = "0x20018CF")]
public enum WebSocketFrameTypes : byte
{
// Token: 0x040065E6 RID: 26086
[Token(Token = "0x40065E6")]
Continuation,
// Token: 0x040065E7 RID: 26087
[Token(Token = "0x40065E7")]
Text,
// Token: 0x040065E8 RID: 26088
[Token(Token = "0x40065E8")]
Binary,
// Token: 0x040065E9 RID: 26089
[Token(Token = "0x40065E9")]
ConnectionClose = 8,
// Token: 0x040065EA RID: 26090
[Token(Token = "0x40065EA")]
Ping,
// Token: 0x040065EB RID: 26091
[Token(Token = "0x40065EB")]
Pong
}
}
@@ -0,0 +1,831 @@
using System;
using System.Collections.Generic;
using System.Net.WebSockets;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using BestHTTP.Extensions;
using BestHTTP.Logger;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018AD RID: 6317
[Token(Token = "0x20018AD")]
public class NativeWebSocket
{
// Token: 0x170017A9 RID: 6057
// (get) Token: 0x0600949D RID: 38045 RVA: 0x001E87DC File Offset: 0x001E69DC
// (set) Token: 0x0600949E RID: 38046 RVA: 0x001E87F0 File Offset: 0x001E69F0
[Token(Token = "0x170017A9")]
public WebSocketStates State
{
[Token(Token = "0x600949D")]
[Address(RVA = "0x4363F0", Offset = "0x4351F0", VA = "0x1804363F0")]
get;
[Token(Token = "0x600949E")]
[Address(RVA = "0x4366B0", Offset = "0x4354B0", VA = "0x1804366B0")]
private set;
}
// Token: 0x0600949F RID: 38047 RVA: 0x001E8804 File Offset: 0x001E6A04
[Token(Token = "0x600949F")]
[Address(RVA = "0x1C39C10", Offset = "0x1C38A10", VA = "0x181C39C10")]
public NativeWebSocket(Uri uri)
{
int num;
do
{
num = 0;
this.State = (WebSocketStates)((ulong)4L);
ClientWebSocket clientWebSocket = new ClientWebSocket();
this._webSocket = clientWebSocket;
Queue<NativeWebSocket.OutboundMessage> queue = new Queue();
this._outboundMessageQueue = queue;
List<ArraySegment<byte>> list = new List();
this._inboundFrames = list;
List<byte[]> list2 = new List();
this._rentedBuffers = list2;
base..ctor();
bool flag = HTTPProtocolFactory.IsSecureProtocol(uri);
string text = "ws";
if (flag)
{
text = "wss";
}
if (uri.Port != -1)
{
int port = uri.Port;
}
bool flag2 = text.Equals("wss", StringComparison.OrdinalIgnoreCase);
object[] array = new object[6];
if (text != 0)
{
}
array[0] = text;
if ("://" != 0)
{
}
array[1] = "://";
string host = uri.Host;
if (host != 0)
{
}
array[2] = host;
if (":" != 0)
{
}
array[3] = ":";
if (":" != 0)
{
}
array[4] = ":";
string requestPathAndQueryURL = uri.GetRequestPathAndQueryURL();
if (requestPathAndQueryURL != 0)
{
}
array[5] = requestPathAndQueryURL;
Uri uri2 = new Uri(string.Concat(array));
this._uri = uri2;
if (!BPHGKAEDBPE.KNJJNNNAEKB(uri2))
{
break;
}
NNMAGDKDBFN nnmagdkdbfn = MHOKOMMOGKM.DMIDMJAKAJD();
Encoding utf = Encoding.UTF8;
string text3;
string text2 = "Bearer " + text3;
this._webSocket._options.SetRequestHeader("Authorization", text2);
}
while (num != 0);
}
// Token: 0x060094A0 RID: 38048 RVA: 0x001E897C File Offset: 0x001E6B7C
[Token(Token = "0x60094A0")]
[Address(RVA = "0x1C39BE0", Offset = "0x1C389E0", VA = "0x181C39BE0")]
public void SetHeader(string name, string value)
{
this._webSocket._options.SetRequestHeader(name, value);
}
// Token: 0x060094A1 RID: 38049 RVA: 0x001E89A4 File Offset: 0x001E6BA4
[Token(Token = "0x60094A1")]
[Address(RVA = "0x1C39220", Offset = "0x1C38020", VA = "0x181C39220")]
public void Open()
{
Action defaultContextAction = AsyncVoidMethodBuilder.Create().m_coreState.m_defaultContextAction;
}
// Token: 0x060094A2 RID: 38050 RVA: 0x001E89C4 File Offset: 0x001E6BC4
[Token(Token = "0x60094A2")]
[Address(RVA = "0x1C39160", Offset = "0x1C37F60", VA = "0x181C39160")]
public void Close()
{
Action defaultContextAction = AsyncVoidMethodBuilder.Create().m_coreState.m_defaultContextAction;
}
// Token: 0x060094A3 RID: 38051 RVA: 0x001E89E4 File Offset: 0x001E6BE4
[Token(Token = "0x60094A3")]
[Address(RVA = "0x1C39090", Offset = "0x1C37E90", VA = "0x181C39090")]
private Task CloseInternal()
{
Task task;
return task;
}
// Token: 0x060094A4 RID: 38052 RVA: 0x001E89F4 File Offset: 0x001E6BF4
[Token(Token = "0x60094A4")]
[Address(RVA = "0x1C39A60", Offset = "0x1C38860", VA = "0x181C39A60")]
public void Send(string message)
{
this._webSocket.Dispose();
Queue<NativeWebSocket.OutboundMessage> outboundMessageQueue = this._outboundMessageQueue;
int num = 0;
outboundMessageQueue.Enqueue(num);
bool flag = this._outboundMessagePendingEvent.Set();
}
// Token: 0x060094A5 RID: 38053 RVA: 0x001E8A30 File Offset: 0x001E6C30
[Token(Token = "0x60094A5")]
[Address(RVA = "0x1C39B20", Offset = "0x1C38920", VA = "0x181C39B20")]
public void Send(byte[] message)
{
this._webSocket.Dispose();
Queue<NativeWebSocket.OutboundMessage> outboundMessageQueue = this._outboundMessageQueue;
bool flag = this._outboundMessagePendingEvent.Set();
}
// Token: 0x060094A6 RID: 38054 RVA: 0x001E8A64 File Offset: 0x001E6C64
[Token(Token = "0x60094A6")]
[Address(RVA = "0x1C39980", Offset = "0x1C38780", VA = "0x181C39980")]
private Task SendLoop(CancellationToken cancellationToken)
{
Task task;
return task;
}
// Token: 0x060094A7 RID: 38055 RVA: 0x001E8A74 File Offset: 0x001E6C74
[Token(Token = "0x60094A7")]
[Address(RVA = "0x1C392D0", Offset = "0x1C380D0", VA = "0x181C392D0")]
private Task ReceiveLoop()
{
Task task;
return task;
}
// Token: 0x060094A8 RID: 38056 RVA: 0x001E8A84 File Offset: 0x001E6C84
[Token(Token = "0x60094A8")]
[Address(RVA = "0x1C393A0", Offset = "0x1C381A0", VA = "0x181C393A0")]
private Task<NativeWebSocket.InboundMessage> Receive()
{
AsyncTaskMethodBuilder asyncTaskMethodBuilder = AsyncTaskMethodBuilder.Create();
Task task;
return task;
}
// Token: 0x060094A9 RID: 38057 RVA: 0x001E8AA0 File Offset: 0x001E6CA0
[Token(Token = "0x60094A9")]
[Address(RVA = "0x1C398C0", Offset = "0x1C386C0", VA = "0x181C398C0")]
private void SafeRaiseOnOpen()
{
NativeWebSocket.OnWebSocketOpenDelegate onOpen = this.OnOpen;
if (onOpen != 0)
{
onOpen(this);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x060094AA RID: 38058 RVA: 0x001E8AD0 File Offset: 0x001E6CD0
[Token(Token = "0x60094AA")]
[Address(RVA = "0x1C397F0", Offset = "0x1C385F0", VA = "0x181C397F0")]
private void SafeRaiseOnMessage(string message)
{
NativeWebSocket.OnWebSocketMessageDelegate onMessage = this.OnMessage;
if (onMessage != 0)
{
onMessage(this, message);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x060094AB RID: 38059 RVA: 0x001E8B00 File Offset: 0x001E6D00
[Token(Token = "0x60094AB")]
[Address(RVA = "0x1C39490", Offset = "0x1C38290", VA = "0x181C39490")]
private void SafeRaiseOnBinary(byte[] message)
{
NativeWebSocket.OnWebSocketBinaryDelegate onBinary = this.OnBinary;
if (onBinary != 0)
{
onBinary(this, message);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x060094AC RID: 38060 RVA: 0x001E8B30 File Offset: 0x001E6D30
[Token(Token = "0x60094AC")]
[Address(RVA = "0x1C39560", Offset = "0x1C38360", VA = "0x181C39560")]
private void SafeRaiseOnClosed(ushort statusCode, string statusMessage)
{
NativeWebSocket.OnWebSocketClosedDelegate onClosed = this.OnClosed;
if (onClosed != 0)
{
onClosed(this, statusCode, statusMessage);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x060094AD RID: 38061 RVA: 0x001E8B60 File Offset: 0x001E6D60
[Token(Token = "0x60094AD")]
[Address(RVA = "0x1C39720", Offset = "0x1C38520", VA = "0x181C39720")]
private void SafeRaiseOnError(Exception exception)
{
NativeWebSocket.OnWebSocketErrorDelegate onError = this.OnError;
if (onError != 0)
{
onError(this, exception);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x060094AE RID: 38062 RVA: 0x001E8B90 File Offset: 0x001E6D90
[Token(Token = "0x60094AE")]
[Address(RVA = "0x1C39650", Offset = "0x1C38450", VA = "0x181C39650")]
private void SafeRaiseOnErrorDesc(string errorDescription)
{
NativeWebSocket.OnWebSocketErrorDescriptionDelegate onErrorDesc = this.OnErrorDesc;
if (onErrorDesc != 0)
{
onErrorDesc(this, errorDescription);
}
ILogger logger = HTTPManager.Logger;
}
// Token: 0x0400654C RID: 25932
[Token(Token = "0x400654C")]
private const int MaxFragmentSize = 32767;
// Token: 0x0400654D RID: 25933
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400654D")]
public NativeWebSocket.OnWebSocketOpenDelegate OnOpen;
// Token: 0x0400654E RID: 25934
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400654E")]
public NativeWebSocket.OnWebSocketMessageDelegate OnMessage;
// Token: 0x0400654F RID: 25935
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x400654F")]
public NativeWebSocket.OnWebSocketBinaryDelegate OnBinary;
// Token: 0x04006550 RID: 25936
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4006550")]
public NativeWebSocket.OnWebSocketClosedDelegate OnClosed;
// Token: 0x04006551 RID: 25937
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4006551")]
public NativeWebSocket.OnWebSocketErrorDelegate OnError;
// Token: 0x04006552 RID: 25938
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x4006552")]
public NativeWebSocket.OnWebSocketErrorDescriptionDelegate OnErrorDesc;
// Token: 0x04006554 RID: 25940
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x4006554")]
private readonly Uri _uri;
// Token: 0x04006555 RID: 25941
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x4006555")]
private readonly ClientWebSocket _webSocket;
// Token: 0x04006556 RID: 25942
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x4006556")]
private readonly Queue<NativeWebSocket.OutboundMessage> _outboundMessageQueue;
// Token: 0x04006557 RID: 25943
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x4006557")]
private readonly List<ArraySegment<byte>> _inboundFrames;
// Token: 0x04006558 RID: 25944
[FieldOffset(Offset = "0x68")]
[Token(Token = "0x4006558")]
private readonly List<byte[]> _rentedBuffers;
// Token: 0x04006559 RID: 25945
[FieldOffset(Offset = "0x70")]
[Token(Token = "0x4006559")]
private CancellationTokenSource _sendLoopCancellationTokenSource;
// Token: 0x0400655A RID: 25946
[FieldOffset(Offset = "0x78")]
[Token(Token = "0x400655A")]
private AutoResetEvent _outboundMessagePendingEvent;
// Token: 0x020018AE RID: 6318
[Token(Token = "0x20018AE")]
private struct OutboundMessage
{
// Token: 0x060094AF RID: 38063 RVA: 0x001E8BC0 File Offset: 0x001E6DC0
[Token(Token = "0x60094AF")]
[Address(RVA = "0x1C3B8C0", Offset = "0x1C3A6C0", VA = "0x181C3B8C0")]
public OutboundMessage(byte[] binaryMessage)
{
this.BinaryMessage = binaryMessage;
this.TextMessage = (ulong)0L;
}
// Token: 0x060094B0 RID: 38064 RVA: 0x001E8BE0 File Offset: 0x001E6DE0
[Token(Token = "0x60094B0")]
[Address(RVA = "0x1C3B8E0", Offset = "0x1C3A6E0", VA = "0x181C3B8E0")]
public OutboundMessage(string textMessage)
{
int num = 0;
this.TextMessage = textMessage;
this.MessageType = (WebSocketMessageType)num;
this.BinaryMessage = num;
}
// Token: 0x0400655B RID: 25947
[FieldOffset(Offset = "0x0")]
[Token(Token = "0x400655B")]
public readonly WebSocketMessageType MessageType;
// Token: 0x0400655C RID: 25948
[FieldOffset(Offset = "0x8")]
[Token(Token = "0x400655C")]
public readonly byte[] BinaryMessage;
// Token: 0x0400655D RID: 25949
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400655D")]
public readonly string TextMessage;
}
// Token: 0x020018AF RID: 6319
[Token(Token = "0x20018AF")]
private struct InboundMessage
{
// Token: 0x060094B1 RID: 38065 RVA: 0x001E8C04 File Offset: 0x001E6E04
[Token(Token = "0x60094B1")]
[Address(RVA = "0x1C37E70", Offset = "0x1C36C70", VA = "0x181C37E70")]
public InboundMessage(byte[] binaryMessage)
{
this.BinaryMessage = binaryMessage;
int num = 0;
int num2 = 0;
this.TextMessage = num2;
this.CloseStatus = num;
this.CloseStatusDescription = num2;
}
// Token: 0x060094B2 RID: 38066 RVA: 0x001E8C34 File Offset: 0x001E6E34
[Token(Token = "0x60094B2")]
[Address(RVA = "0x1C37E50", Offset = "0x1C36C50", VA = "0x181C37E50")]
public InboundMessage(string textMessage)
{
int num = 0;
this.TextMessage = textMessage;
int num2 = 0;
this.MessageType = (WebSocketMessageType)num;
this.BinaryMessage = num;
this.CloseStatus = num2;
this.CloseStatusDescription = num;
}
// Token: 0x060094B3 RID: 38067 RVA: 0x001E8C68 File Offset: 0x001E6E68
[Token(Token = "0x60094B3")]
[Address(RVA = "0x1C37E90", Offset = "0x1C36C90", VA = "0x181C37E90")]
public InboundMessage(WebSocketCloseStatus? closeStatus, string closeStatusDescription)
{
int num = 0;
this.BinaryMessage = num;
this.TextMessage = num;
this.CloseStatus = closeStatus;
this.CloseStatusDescription = closeStatusDescription;
}
// Token: 0x0400655E RID: 25950
[FieldOffset(Offset = "0x0")]
[Token(Token = "0x400655E")]
public readonly WebSocketMessageType MessageType;
// Token: 0x0400655F RID: 25951
[FieldOffset(Offset = "0x8")]
[Token(Token = "0x400655F")]
public readonly byte[] BinaryMessage;
// Token: 0x04006560 RID: 25952
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006560")]
public readonly string TextMessage;
// Token: 0x04006561 RID: 25953
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4006561")]
public readonly WebSocketCloseStatus? CloseStatus;
// Token: 0x04006562 RID: 25954
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4006562")]
public readonly string CloseStatusDescription;
}
// Token: 0x020018B0 RID: 6320
[Token(Token = "0x20018B0")]
public sealed class OnWebSocketOpenDelegate : MulticastDelegate
{
// Token: 0x060094B4 RID: 38068 RVA: 0x001E8C94 File Offset: 0x001E6E94
[Token(Token = "0x60094B4")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketOpenDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094B5 RID: 38069 RVA: 0x001E8CB0 File Offset: 0x001E6EB0
[Token(Token = "0x60094B5")]
[Address(RVA = "0x747410", Offset = "0x746210", VA = "0x180747410", Slot = "13")]
public void Invoke(NativeWebSocket webSocket)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094B6 RID: 38070 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094B6")]
[Address(RVA = "0x457150", Offset = "0x455F50", VA = "0x180457150", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094B7 RID: 38071 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094B7")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B1 RID: 6321
[Token(Token = "0x20018B1")]
public sealed class OnWebSocketMessageDelegate : MulticastDelegate
{
// Token: 0x060094B8 RID: 38072 RVA: 0x001E8D64 File Offset: 0x001E6F64
[Token(Token = "0x60094B8")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketMessageDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094B9 RID: 38073 RVA: 0x001E8D80 File Offset: 0x001E6F80
[Token(Token = "0x60094B9")]
[Address(RVA = "0x5F71E0", Offset = "0x5F5FE0", VA = "0x1805F71E0", Slot = "13")]
public void Invoke(NativeWebSocket webSocket, string message)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094BA RID: 38074 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094BA")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, string message, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094BB RID: 38075 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094BB")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B2 RID: 6322
[Token(Token = "0x20018B2")]
public sealed class OnWebSocketBinaryDelegate : MulticastDelegate
{
// Token: 0x060094BC RID: 38076 RVA: 0x001E8E00 File Offset: 0x001E7000
[Token(Token = "0x60094BC")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketBinaryDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094BD RID: 38077 RVA: 0x001E8E1C File Offset: 0x001E701C
[Token(Token = "0x60094BD")]
[Address(RVA = "0x1C3A8C0", Offset = "0x1C396C0", VA = "0x181C3A8C0", Slot = "13")]
public void Invoke(NativeWebSocket webSocket, byte[] data)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094BE RID: 38078 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094BE")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, byte[] data, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094BF RID: 38079 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094BF")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B3 RID: 6323
[Token(Token = "0x20018B3")]
public sealed class OnWebSocketClosedDelegate : MulticastDelegate
{
// Token: 0x060094C0 RID: 38080 RVA: 0x001E8EE4 File Offset: 0x001E70E4
[Token(Token = "0x60094C0")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketClosedDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094C1 RID: 38081 RVA: 0x001E8F00 File Offset: 0x001E7100
[Token(Token = "0x60094C1")]
[Address(RVA = "0x1C3ADB0", Offset = "0x1C39BB0", VA = "0x181C3ADB0", Slot = "13")]
public void Invoke(NativeWebSocket webSocket, ushort code, string message)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094C2 RID: 38082 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094C2")]
[Address(RVA = "0x1C3AC70", Offset = "0x1C39A70", VA = "0x181C3AC70", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, ushort code, string message, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094C3 RID: 38083 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094C3")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B4 RID: 6324
[Token(Token = "0x20018B4")]
public sealed class OnWebSocketErrorDelegate : MulticastDelegate
{
// Token: 0x060094C4 RID: 38084 RVA: 0x001E8FA4 File Offset: 0x001E71A4
[Token(Token = "0x60094C4")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketErrorDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094C5 RID: 38085 RVA: 0x001E8FC0 File Offset: 0x001E71C0
[Token(Token = "0x60094C5")]
[Address(RVA = "0x1C3A8C0", Offset = "0x1C396C0", VA = "0x181C3A8C0", Slot = "13")]
public void Invoke(NativeWebSocket webSocket, Exception ex)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094C6 RID: 38086 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094C6")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, Exception ex, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094C7 RID: 38087 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094C7")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B5 RID: 6325
[Token(Token = "0x20018B5")]
public sealed class OnWebSocketErrorDescriptionDelegate : MulticastDelegate
{
// Token: 0x060094C8 RID: 38088 RVA: 0x001E9084 File Offset: 0x001E7284
[Token(Token = "0x60094C8")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketErrorDescriptionDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094C9 RID: 38089 RVA: 0x001E90A0 File Offset: 0x001E72A0
[Token(Token = "0x60094C9")]
[Address(RVA = "0x5F71E0", Offset = "0x5F5FE0", VA = "0x1805F71E0", Slot = "13")]
public void Invoke(NativeWebSocket webSocket, string reason)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094CA RID: 38090 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094CA")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(NativeWebSocket webSocket, string reason, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094CB RID: 38091 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094CB")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
// Token: 0x020018B6 RID: 6326
[Token(Token = "0x20018B6")]
public static class WaitHandleAsyncFactory
{
// Token: 0x060094CC RID: 38092 RVA: 0x001E9120 File Offset: 0x001E7320
[Token(Token = "0x60094CC")]
[Address(RVA = "0x1C40550", Offset = "0x1C3F350", VA = "0x181C40550")]
public static Task FromWaitHandle(WaitHandle handle)
{
}
// Token: 0x060094CD RID: 38093 RVA: 0x001E9130 File Offset: 0x001E7330
[Token(Token = "0x60094CD")]
[Address(RVA = "0x1C401E0", Offset = "0x1C3EFE0", VA = "0x181C401E0")]
public static Task<bool> FromWaitHandle(WaitHandle handle, TimeSpan timeout)
{
Task<bool> task;
return task;
}
// Token: 0x060094CE RID: 38094 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094CE")]
[Address(RVA = "0x1C40140", Offset = "0x1C3EF40", VA = "0x181C40140")]
public static Task FromWaitHandle(WaitHandle handle, CancellationToken token)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094CF RID: 38095 RVA: 0x001E9140 File Offset: 0x001E7340
[Token(Token = "0x60094CF")]
[Address(RVA = "0x1C40280", Offset = "0x1C3F080", VA = "0x181C40280")]
public static Task<bool> FromWaitHandle(WaitHandle handle, TimeSpan timeout, CancellationToken token)
{
/*
An exception occurred when decompiling this method (060094CF)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Threading.Tasks.Task`1<System.Boolean> BestHTTP.WebSocket.NativeWebSocket/WaitHandleAsyncFactory::FromWaitHandle(System.Threading.WaitHandle,System.TimeSpan,System.Threading.CancellationToken)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_3D:
stloc:ArgumentNullException(var_8_47, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("handle")))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1660
*/;
}
// Token: 0x060094D0 RID: 38096 RVA: 0x001E9198 File Offset: 0x001E7398
[Token(Token = "0x60094D0")]
[Address(RVA = "0x1C40040", Offset = "0x1C3EE40", VA = "0x181C40040")]
private static Task<bool> DoFromWaitHandle(WaitHandle handle, TimeSpan timeout, CancellationToken token)
{
AsyncTaskMethodBuilder asyncTaskMethodBuilder = AsyncTaskMethodBuilder.Create();
Task task;
return task;
}
// Token: 0x060094D1 RID: 38097 RVA: 0x001E91B0 File Offset: 0x001E73B0
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x60094D1")]
[Address(RVA = "0x1C40620", Offset = "0x1C3F420", VA = "0x181C40620")]
static WaitHandleAsyncFactory()
{
Task<bool> task = Task.FromResult<bool>(true);
int num = 0;
NativeWebSocket.WaitHandleAsyncFactory.CompletedTaskTrue = task;
NativeWebSocket.WaitHandleAsyncFactory.CompletedTaskFalse = Task.FromResult<bool>(num != 0);
Task<bool> task2;
NativeWebSocket.WaitHandleAsyncFactory.CancelledTask = task2;
}
// Token: 0x04006563 RID: 25955
[Token(Token = "0x4006563")]
private static Task<bool> CompletedTaskTrue;
// Token: 0x04006564 RID: 25956
[Token(Token = "0x4006564")]
private static Task<bool> CompletedTaskFalse;
// Token: 0x04006565 RID: 25957
[Token(Token = "0x4006565")]
private static Task<bool> CancelledTask;
// Token: 0x020018B7 RID: 6327
[Token(Token = "0x20018B7")]
private sealed class ThreadPoolRegistration : IDisposable
{
// Token: 0x060094D2 RID: 38098 RVA: 0x000396E2 File Offset: 0x000378E2
[Token(Token = "0x60094D2")]
[Address(RVA = "0x1C3CFA0", Offset = "0x1C3BDA0", VA = "0x181C3CFA0")]
public ThreadPoolRegistration(WaitHandle handle, TimeSpan timeout, TaskCompletionSource<bool> tcs)
{
}
// Token: 0x060094D3 RID: 38099 RVA: 0x000396E2 File Offset: 0x000378E2
[Token(Token = "0x60094D3")]
[Address(RVA = "0x1C3CF70", Offset = "0x1C3BD70", VA = "0x181C3CF70", Slot = "4")]
void IDisposable.Dispose()
{
}
// Token: 0x04006566 RID: 25958
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006566")]
private readonly RegisteredWaitHandle _registeredWaitHandle;
}
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C4 RID: 6340
[Token(Token = "0x20018C4")]
public sealed class OnWebSocketBinaryDelegate : MulticastDelegate
{
// Token: 0x060094F0 RID: 38128 RVA: 0x001E9C8C File Offset: 0x001E7E8C
[Token(Token = "0x60094F0")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketBinaryDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094F1 RID: 38129 RVA: 0x001E9CA8 File Offset: 0x001E7EA8
[Token(Token = "0x60094F1")]
[Address(RVA = "0x1C3A8C0", Offset = "0x1C396C0", VA = "0x181C3A8C0", Slot = "13")]
public void Invoke(WebSocket webSocket, byte[] data)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094F2 RID: 38130 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094F2")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, byte[] data, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094F3 RID: 38131 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094F3")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C5 RID: 6341
[Token(Token = "0x20018C5")]
public sealed class OnWebSocketClosedDelegate : MulticastDelegate
{
// Token: 0x060094F4 RID: 38132 RVA: 0x001E9D70 File Offset: 0x001E7F70
[Token(Token = "0x60094F4")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketClosedDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094F5 RID: 38133 RVA: 0x001E9D8C File Offset: 0x001E7F8C
[Token(Token = "0x60094F5")]
[Address(RVA = "0x1C3ADB0", Offset = "0x1C39BB0", VA = "0x181C3ADB0", Slot = "13")]
public void Invoke(WebSocket webSocket, ushort code, string message)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094F6 RID: 38134 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094F6")]
[Address(RVA = "0x1C3AD10", Offset = "0x1C39B10", VA = "0x181C3AD10", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, ushort code, string message, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094F7 RID: 38135 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094F7")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C6 RID: 6342
[Token(Token = "0x20018C6")]
public sealed class OnWebSocketErrorDelegate : MulticastDelegate
{
// Token: 0x060094F8 RID: 38136 RVA: 0x001E9E30 File Offset: 0x001E8030
[Token(Token = "0x60094F8")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketErrorDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094F9 RID: 38137 RVA: 0x001E9E4C File Offset: 0x001E804C
[Token(Token = "0x60094F9")]
[Address(RVA = "0x1C3A8C0", Offset = "0x1C396C0", VA = "0x181C3A8C0", Slot = "13")]
public void Invoke(WebSocket webSocket, Exception ex)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094FA RID: 38138 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094FA")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, Exception ex, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094FB RID: 38139 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094FB")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C7 RID: 6343
[Token(Token = "0x20018C7")]
public sealed class OnWebSocketErrorDescriptionDelegate : MulticastDelegate
{
// Token: 0x060094FC RID: 38140 RVA: 0x001E9F10 File Offset: 0x001E8110
[Token(Token = "0x60094FC")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketErrorDescriptionDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094FD RID: 38141 RVA: 0x001E9F2C File Offset: 0x001E812C
[Token(Token = "0x60094FD")]
[Address(RVA = "0x5F71E0", Offset = "0x5F5FE0", VA = "0x1805F71E0", Slot = "13")]
public void Invoke(WebSocket webSocket, string reason)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094FE RID: 38142 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094FE")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, string reason, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094FF RID: 38143 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094FF")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,51 @@
using System;
using BestHTTP.WebSocket.Frames;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C8 RID: 6344
[Token(Token = "0x20018C8")]
public sealed class OnWebSocketIncompleteFrameDelegate : MulticastDelegate
{
// Token: 0x06009500 RID: 38144 RVA: 0x001E9FAC File Offset: 0x001E81AC
[Token(Token = "0x6009500")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketIncompleteFrameDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x06009501 RID: 38145 RVA: 0x001E9FC8 File Offset: 0x001E81C8
[Token(Token = "0x6009501")]
[Address(RVA = "0x1C3B280", Offset = "0x1C3A080", VA = "0x181C3B280", Slot = "13")]
public void Invoke(WebSocket webSocket, WebSocketFrameReader frame)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x06009502 RID: 38146 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x6009502")]
[Address(RVA = "0x1C3B1F0", Offset = "0x1C39FF0", VA = "0x181C3B1F0", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, WebSocketFrameReader frame, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06009503 RID: 38147 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x6009503")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C3 RID: 6339
[Token(Token = "0x20018C3")]
public sealed class OnWebSocketMessageDelegate : MulticastDelegate
{
// Token: 0x060094EC RID: 38124 RVA: 0x001E9BF0 File Offset: 0x001E7DF0
[Token(Token = "0x60094EC")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketMessageDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094ED RID: 38125 RVA: 0x001E9C0C File Offset: 0x001E7E0C
[Token(Token = "0x60094ED")]
[Address(RVA = "0x5F71E0", Offset = "0x5F5FE0", VA = "0x1805F71E0", Slot = "13")]
public void Invoke(WebSocket webSocket, string message)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094EE RID: 38126 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094EE")]
[Address(RVA = "0x457420", Offset = "0x456220", VA = "0x180457420", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, string message, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094EF RID: 38127 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094EF")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C2 RID: 6338
[Token(Token = "0x20018C2")]
public sealed class OnWebSocketOpenDelegate : MulticastDelegate
{
// Token: 0x060094E8 RID: 38120 RVA: 0x001E9B48 File Offset: 0x001E7D48
[Token(Token = "0x60094E8")]
[Address(RVA = "0x448ED0", Offset = "0x447CD0", VA = "0x180448ED0")]
public OnWebSocketOpenDelegate(object @object, IntPtr method)
{
this.method = method;
this.m_target = @object;
}
// Token: 0x060094E9 RID: 38121 RVA: 0x001E9B64 File Offset: 0x001E7D64
[Token(Token = "0x60094E9")]
[Address(RVA = "0x1332C50", Offset = "0x1331A50", VA = "0x181332C50", Slot = "13")]
public void Invoke(WebSocket webSocket)
{
if (this.delegates != 0)
{
}
uint num;
if (num != (uint)0)
{
throw new ExecutionEngineException();
}
}
// Token: 0x060094EA RID: 38122 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094EA")]
[Address(RVA = "0x457150", Offset = "0x455F50", VA = "0x180457150", Slot = "14")]
public IAsyncResult BeginInvoke(WebSocket webSocket, AsyncCallback callback, object @object)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x060094EB RID: 38123 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x60094EB")]
[Address(RVA = "0x448B70", Offset = "0x447970", VA = "0x180448B70", Slot = "15")]
public void EndInvoke(IAsyncResult result)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
}
}
@@ -0,0 +1,648 @@
using System;
using System.Text;
using System.Threading;
using BestHTTP.Decompression.Zlib;
using BestHTTP.Extensions;
using BestHTTP.Logger;
using BestHTTP.WebSocket.Extensions;
using BestHTTP.WebSocket.Frames;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C9 RID: 6345
[Token(Token = "0x20018C9")]
public sealed class WebSocket
{
// Token: 0x170017AA RID: 6058
// (get) Token: 0x06009504 RID: 38148 RVA: 0x001EA0F0 File Offset: 0x001E82F0
// (set) Token: 0x06009505 RID: 38149 RVA: 0x001EA104 File Offset: 0x001E8304
[Token(Token = "0x170017AA")]
public WebSocketStates State
{
[Token(Token = "0x6009504")]
[Address(RVA = "0x42D5E0", Offset = "0x42C3E0", VA = "0x18042D5E0")]
get;
[Token(Token = "0x6009505")]
[Address(RVA = "0x495D50", Offset = "0x494B50", VA = "0x180495D50")]
private set;
}
// Token: 0x170017AB RID: 6059
// (get) Token: 0x06009506 RID: 38150 RVA: 0x001EA118 File Offset: 0x001E8318
[Token(Token = "0x170017AB")]
public bool IsOpen
{
[Token(Token = "0x6009506")]
[Address(RVA = "0x1C48120", Offset = "0x1C46F20", VA = "0x181C48120")]
get
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse == 0)
{
}
return !webSocketResponse.closed;
}
}
// Token: 0x170017AC RID: 6060
// (get) Token: 0x06009507 RID: 38151 RVA: 0x001EA13C File Offset: 0x001E833C
[Token(Token = "0x170017AC")]
public int BufferedAmount
{
[Token(Token = "0x6009507")]
[Address(RVA = "0x1C48100", Offset = "0x1C46F00", VA = "0x181C48100")]
get
{
return this.webSocket._bufferedAmount;
}
}
// Token: 0x170017AD RID: 6061
// (get) Token: 0x06009508 RID: 38152 RVA: 0x001EA15C File Offset: 0x001E835C
// (set) Token: 0x06009509 RID: 38153 RVA: 0x001EA170 File Offset: 0x001E8370
[Token(Token = "0x170017AD")]
public bool StartPingThread
{
[Token(Token = "0x6009508")]
[Address(RVA = "0x49E540", Offset = "0x49D340", VA = "0x18049E540")]
get;
[Token(Token = "0x6009509")]
[Address(RVA = "0x756A50", Offset = "0x755850", VA = "0x180756A50")]
set;
}
// Token: 0x170017AE RID: 6062
// (get) Token: 0x0600950A RID: 38154 RVA: 0x001EA184 File Offset: 0x001E8384
// (set) Token: 0x0600950B RID: 38155 RVA: 0x001EA198 File Offset: 0x001E8398
[Token(Token = "0x170017AE")]
public int PingFrequency
{
[Token(Token = "0x600950A")]
[Address(RVA = "0x495080", Offset = "0x493E80", VA = "0x180495080")]
get;
[Token(Token = "0x600950B")]
[Address(RVA = "0x52EC20", Offset = "0x52DA20", VA = "0x18052EC20")]
set;
}
// Token: 0x170017AF RID: 6063
// (get) Token: 0x0600950C RID: 38156 RVA: 0x001EA1AC File Offset: 0x001E83AC
// (set) Token: 0x0600950D RID: 38157 RVA: 0x001EA1C0 File Offset: 0x001E83C0
[Token(Token = "0x170017AF")]
public TimeSpan CloseAfterNoMesssage
{
[Token(Token = "0x600950C")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
get;
[Token(Token = "0x600950D")]
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
set;
}
// Token: 0x170017B0 RID: 6064
// (get) Token: 0x0600950E RID: 38158 RVA: 0x001EA1D4 File Offset: 0x001E83D4
// (set) Token: 0x0600950F RID: 38159 RVA: 0x001EA1E8 File Offset: 0x001E83E8
[Token(Token = "0x170017B0")]
public HTTPRequest InternalRequest
{
[Token(Token = "0x600950E")]
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
get;
[Token(Token = "0x600950F")]
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
private set;
}
// Token: 0x170017B1 RID: 6065
// (get) Token: 0x06009510 RID: 38160 RVA: 0x001EA1FC File Offset: 0x001E83FC
// (set) Token: 0x06009511 RID: 38161 RVA: 0x001EA210 File Offset: 0x001E8410
[Token(Token = "0x170017B1")]
public IExtension[] Extensions
{
[Token(Token = "0x6009510")]
[Address(RVA = "0x3F63E0", Offset = "0x3F51E0", VA = "0x1803F63E0")]
get;
[Token(Token = "0x6009511")]
[Address(RVA = "0x409C60", Offset = "0x408A60", VA = "0x180409C60")]
private set;
}
// Token: 0x170017B2 RID: 6066
// (get) Token: 0x06009512 RID: 38162 RVA: 0x001EA224 File Offset: 0x001E8424
[Token(Token = "0x170017B2")]
public int Latency
{
[Token(Token = "0x6009512")]
[Address(RVA = "0x1C48160", Offset = "0x1C46F60", VA = "0x181C48160")]
get
{
return this.webSocket.<Latency>k__BackingField;
}
}
// Token: 0x06009513 RID: 38163 RVA: 0x001EA244 File Offset: 0x001E8444
[Token(Token = "0x6009513")]
[Address(RVA = "0x1C47680", Offset = "0x1C46480", VA = "0x181C47680")]
public WebSocket(Uri uri)
{
string empty = string.Empty;
IExtension[] array = new IExtension[1];
int num = 0;
PerMessageCompression perMessageCompression;
perMessageCompression.FieldGetter(num, empty, empty);
perMessageCompression.<Level>k__BackingField = (CompressionLevel)((ulong)6L);
perMessageCompression.<ClientNoContextTakeover>k__BackingField = false;
perMessageCompression.<ClientMaxWindowBits>k__BackingField = (int)((ulong)15L);
perMessageCompression.<ServerMaxWindowBits>k__BackingField = (int)((ulong)15L);
perMessageCompression.<MinimumDataLegthToCompress>k__BackingField = (int)((ulong)256L);
array[0] = perMessageCompression;
this.Extensions = array;
}
// Token: 0x06009514 RID: 38164 RVA: 0x001EA2B4 File Offset: 0x001E84B4
[Token(Token = "0x6009514")]
[Address(RVA = "0x1C47830", Offset = "0x1C46630", VA = "0x181C47830")]
public WebSocket(Uri uri, string origin, string protocol, params IExtension[] extensions)
{
int num = 0;
base.FieldGetter(num, origin, protocol);
bool flag = HTTPProtocolFactory.IsSecureProtocol(uri);
string text = "ws";
if (flag)
{
text = "wss";
}
if (uri.Port != -1)
{
int port = uri.Port;
}
bool flag2 = text.Equals("wss", StringComparison.OrdinalIgnoreCase);
object[] array = new object[6];
if (text != 0)
{
}
array[0] = text;
if ("://" != 0)
{
}
array[1] = "://";
string host = uri.Host;
if (host != 0)
{
}
array[2] = host;
if (":" != 0)
{
}
array[3] = ":";
int num2;
if (num2 != 0)
{
}
array[4] = num2;
string requestPathAndQueryURL = uri.GetRequestPathAndQueryURL();
if (requestPathAndQueryURL != 0)
{
}
array[5] = requestPathAndQueryURL;
Uri uri2 = new Uri(string.Concat(array));
this.PingFrequency = (int)((ulong)1000L);
TimeSpan timeSpan;
this.CloseAfterNoMesssage = timeSpan;
OnRequestFinishedDelegate onRequestFinishedDelegate = new OnRequestFinishedDelegate(this.OnInternalRequestCallback);
HTTPRequest httprequest = new HTTPRequest(uri2, onRequestFinishedDelegate);
this.InternalRequest = httprequest;
OnRequestFinishedDelegate onRequestFinishedDelegate2 = new OnRequestFinishedDelegate(this.OnInternalRequestUpgraded);
httprequest.OnUpgraded = onRequestFinishedDelegate2;
if (!HTTPProtocolFactory.IsSecureProtocol(uri2) && uri2.Port != 80 && HTTPProtocolFactory.IsSecureProtocol(uri2) && uri2.Port != 443)
{
HTTPRequest httprequest2 = this.<InternalRequest>k__BackingField;
string host2 = uri2.Host;
int port2 = uri2.Port;
string text2 = host2 + ":" + port2;
}
HTTPRequest httprequest3 = this.<InternalRequest>k__BackingField;
string host3 = uri2.Host;
httprequest3.SetHeader("Host", host3);
this.<InternalRequest>k__BackingField.SetHeader("Upgrade", "websocket");
this.<InternalRequest>k__BackingField.SetHeader("Connection", "Upgrade");
HTTPRequest httprequest4 = this.<InternalRequest>k__BackingField;
object[] array2 = new object[4];
array2[0] = this;
HTTPRequest httprequest5 = this.<InternalRequest>k__BackingField;
if (httprequest5 != 0)
{
}
array2[1] = httprequest5;
array2[2] = uri2;
object obj = new object();
if (obj != 0)
{
}
array2[3] = obj;
string secKey = this.GetSecKey(array2);
httprequest4.SetHeader("Sec-WebSocket-Key", secKey);
if (secKey == 0)
{
this.<InternalRequest>k__BackingField.SetHeader("Origin", origin);
}
this.<InternalRequest>k__BackingField.SetHeader("Sec-WebSocket-Version", "13");
if (secKey == 0)
{
this.<InternalRequest>k__BackingField.SetHeader("Sec-WebSocket-Protocol", protocol);
}
this.<InternalRequest>k__BackingField.SetHeader("Cache-Control", "no-cache");
this.<InternalRequest>k__BackingField.SetHeader("Pragma", "no-cache");
HTTPRequest httprequest6 = this.<InternalRequest>k__BackingField;
this.Extensions = 0;
httprequest6.DisableCache = true;
this.<InternalRequest>k__BackingField.<DisableRetry>k__BackingField = true;
this.<InternalRequest>k__BackingField.<TryToMinimizeTCPLatency>k__BackingField = true;
Proxy <Proxy>k__BackingField = HTTPManager.<Proxy>k__BackingField;
if (<Proxy>k__BackingField != 0 && <Proxy>k__BackingField != 0)
{
HTTPProxy httpproxy;
this.<InternalRequest>k__BackingField.<Proxy>k__BackingField = httpproxy;
}
HTTPManager.Setup();
}
// Token: 0x06009515 RID: 38165 RVA: 0x001EA5A8 File Offset: 0x001E87A8
[Token(Token = "0x6009515")]
[Address(RVA = "0x1C46A00", Offset = "0x1C45800", VA = "0x181C46A00")]
private void OnInternalRequestCallback(HTTPRequest req, HTTPResponse resp)
{
int num = 0;
HTTPRequestStates httprequestStates = req.<State>k__BackingField;
if (req != 0)
{
if (req != 0 && req != 0 && req != 0 && httprequestStates != HTTPRequestStates.Queued)
{
return;
}
if (req.<Exception>k__BackingField != 0)
{
Exception innerException = req.<Exception>k__BackingField.InnerException;
string text2;
string text = "Request Finished with Error! " + text2;
}
string empty = string.Empty;
string text3 = "Request Finished with Error! " + empty;
}
if (!resp.IsSuccess)
{
int <StatusCode>k__BackingField = resp.<StatusCode>k__BackingField;
if (<StatusCode>k__BackingField != 101)
{
string <Message>k__BackingField = resp.<Message>k__BackingField;
string dataAsText = resp.DataAsText;
string text4 = string.Format("Request Finished Successfully, but the server sent an error. Status Code: {0}-{1} Message: {2}", <StatusCode>k__BackingField, <Message>k__BackingField, dataAsText);
if ((int)this.<State>k__BackingField == num && text4 != 0)
{
OnWebSocketClosedDelegate onClosed = this.OnClosed;
if (onClosed == 0)
{
goto IL_112;
}
uint num2;
onClosed(this, (ushort)num2, "Closed while opening");
}
OnWebSocketErrorDelegate onError = this.OnError;
if (onError != 0)
{
Exception <Exception>k__BackingField = req.<Exception>k__BackingField;
onError(this, <Exception>k__BackingField);
}
OnWebSocketErrorDescriptionDelegate onErrorDesc = this.OnErrorDesc;
if (onErrorDesc != 0)
{
onErrorDesc(this, text4);
}
if (this.OnError == num && this.OnErrorDesc == num)
{
ILogger logger = HTTPManager.Logger;
}
IL_112:
if ((req.isKeepAlive ? 1 : 0) != num || resp == 0 || resp != 0)
{
return;
}
return;
}
}
ILogger logger2 = HTTPManager.Logger;
string text6;
string text5 = string.Format("Request finished. Status Code: {0} Message: {1}", text6, resp);
throw new NullReferenceException();
}
// Token: 0x06009516 RID: 38166 RVA: 0x001EA6F8 File Offset: 0x001E88F8
[Token(Token = "0x6009516")]
[Address(RVA = "0x1C46D30", Offset = "0x1C45B30", VA = "0x181C46D30")]
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp)
{
int num = 0;
if (resp != 0)
{
}
this.webSocket = num;
WebSocketResponse webSocketResponse6;
WaitCallback waitCallback;
if (num != 0)
{
IExtension[] array = this.<Extensions>k__BackingField;
if (array != 0)
{
int length = array.Length;
if (num < length)
{
if (array[num] != 0 && array == 0)
{
this.<Extensions>k__BackingField[0] = num;
}
ILogger logger = HTTPManager.Logger;
IExtension[] array2 = this.<Extensions>k__BackingField;
int num2 = 0;
array2[0] = num2;
num++;
}
}
this.<State>k__BackingField = (WebSocketStates)((ulong)1L);
if (this.OnOpen != (ulong)0L)
{
this.OnOpen(this);
ILogger logger2 = HTTPManager.Logger;
}
WebSocketResponse webSocketResponse = this.webSocket;
Action<WebSocketResponse, string> action = delegate(WebSocketResponse ws, string msg)
{
OnWebSocketMessageDelegate onMessage = this.OnMessage;
if (onMessage != 0)
{
onMessage(this, msg);
return;
}
};
webSocketResponse.OnText = action;
WebSocketResponse webSocketResponse2 = this.webSocket;
Action<WebSocketResponse, byte[]> action2 = delegate(WebSocketResponse ws, byte[] bin)
{
OnWebSocketBinaryDelegate onBinary = this.OnBinary;
if (onBinary != 0)
{
onBinary(this, bin);
return;
}
};
webSocketResponse2.OnBinary = action2;
WebSocketResponse webSocketResponse3 = this.webSocket;
Action<WebSocketResponse, ushort, string> action3 = delegate(WebSocketResponse ws, ushort code, string msg)
{
OnWebSocketClosedDelegate onClosed = this.OnClosed;
this.<State>k__BackingField = (WebSocketStates)((ulong)3L);
if (onClosed != 0)
{
onClosed(this, code, msg);
return;
}
};
webSocketResponse3.OnClosed = action3;
if (this.OnIncompleteFrame != (ulong)0L)
{
WebSocketResponse webSocketResponse4 = this.webSocket;
Action<WebSocketResponse, WebSocketFrameReader> action4 = delegate(WebSocketResponse ws, WebSocketFrameReader frame)
{
if (this.OnIncompleteFrame != 0)
{
byte[] <Data>k__BackingField = frame.<Data>k__BackingField;
}
};
webSocketResponse4.OnIncompleteFrame = action4;
}
if (this.<StartPingThread>k__BackingField)
{
WebSocketResponse webSocketResponse5 = this.webSocket;
int num3 = Math.Max(this.<PingFrequency>k__BackingField, 100);
webSocketResponse5.StartPinging(num3);
}
webSocketResponse6 = this.webSocket;
waitCallback = new WaitCallback(webSocketResponse6.ReceiveThreadFunc);
bool flag = ThreadPool.QueueUserWorkItem(waitCallback);
return;
}
if (waitCallback.original_method_info != 0)
{
}
if (waitCallback.data != 0 && webSocketResponse6.Stream != 0)
{
bool canRead = webSocketResponse6.Stream.CanRead;
DelegateData data = waitCallback.data;
}
waitCallback.method_ptr = (IntPtr)((ulong)3L);
}
// Token: 0x06009517 RID: 38167 RVA: 0x001EA8B0 File Offset: 0x001E8AB0
[Token(Token = "0x6009517")]
[Address(RVA = "0x1C472A0", Offset = "0x1C460A0", VA = "0x181C472A0")]
public void Open()
{
if (!this.requestSent)
{
if (this.<Extensions>k__BackingField != (ulong)0L)
{
int num = 0;
IExtension[] array = this.<Extensions>k__BackingField;
int length = array.Length;
if (num < length)
{
if (array[num] != 0)
{
}
num++;
}
ILogger logger = HTTPManager.Logger;
}
HTTPRequest httprequest = this.<InternalRequest>k__BackingField.Send();
this.requestSent = true;
this.<State>k__BackingField = (WebSocketStates)((ulong)0L);
return;
}
InvalidOperationException ex = new InvalidOperationException("Open already called! You can't reuse this WebSocket instance!");
throw new IndexOutOfRangeException();
}
// Token: 0x06009518 RID: 38168 RVA: 0x001EA940 File Offset: 0x001E8B40
[Token(Token = "0x6009518")]
[Address(RVA = "0x1C47430", Offset = "0x1C46230", VA = "0x181C47430")]
public void Send(string message)
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
this.webSocket.Send(message);
}
}
// Token: 0x06009519 RID: 38169 RVA: 0x001EA974 File Offset: 0x001E8B74
[Token(Token = "0x6009519")]
[Address(RVA = "0x1C47570", Offset = "0x1C46370", VA = "0x181C47570")]
public void Send(byte[] buffer)
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
this.webSocket.Send(buffer);
}
}
// Token: 0x0600951A RID: 38170 RVA: 0x001EA9A8 File Offset: 0x001E8BA8
[Token(Token = "0x600951A")]
[Address(RVA = "0x1C47490", Offset = "0x1C46290", VA = "0x181C47490")]
public void Send(byte[] buffer, ulong offset, ulong count)
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
this.webSocket.Send(buffer, offset, count);
}
}
// Token: 0x0600951B RID: 38171 RVA: 0x001EA9E0 File Offset: 0x001E8BE0
[Token(Token = "0x600951B")]
[Address(RVA = "0x1C47510", Offset = "0x1C46310", VA = "0x181C47510")]
public void Send(WebSocketFrame frame)
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
this.webSocket.Send(frame);
}
}
// Token: 0x0600951C RID: 38172 RVA: 0x001EAA14 File Offset: 0x001E8C14
[Token(Token = "0x600951C")]
[Address(RVA = "0x1C46540", Offset = "0x1C45340", VA = "0x181C46540")]
public void Close()
{
WebSocketStates webSocketStates = this.<State>k__BackingField;
this.<State>k__BackingField = (WebSocketStates)((ulong)2L);
WebSocketResponse webSocketResponse = this.webSocket;
}
// Token: 0x0600951D RID: 38173 RVA: 0x001EAA5C File Offset: 0x001E8C5C
[Token(Token = "0x600951D")]
[Address(RVA = "0x1C46600", Offset = "0x1C45400", VA = "0x181C46600")]
public void Close(ushort code, string message)
{
WebSocketResponse webSocketResponse = this.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
this.webSocket.Close(code, message);
}
}
// Token: 0x0600951E RID: 38174 RVA: 0x001EAA90 File Offset: 0x001E8C90
[Token(Token = "0x600951E")]
[Address(RVA = "0x1C46670", Offset = "0x1C45470", VA = "0x181C46670")]
public static byte[] EncodeCloseData(ushort code, string message)
{
int num;
byte[] array;
do
{
num = 0;
object obj = Encoding.UTF8.Clone();
byte[] bytes = BitConverter.GetBytes(code);
int length = bytes.Length;
int num2 = 0;
Array.Reverse(bytes, num2, length);
BufferPoolMemoryStream bufferPoolMemoryStream;
int num3 = bufferPoolMemoryStream.ReadByte();
Encoding utf = Encoding.UTF8;
int num4 = bufferPoolMemoryStream.ReadByte();
array = bufferPoolMemoryStream.ToArray();
if (bufferPoolMemoryStream != 0)
{
}
}
while (num != 0);
return array;
}
// Token: 0x0600951F RID: 38175 RVA: 0x001EAB1C File Offset: 0x001E8D1C
[Token(Token = "0x600951F")]
[Address(RVA = "0x1C46880", Offset = "0x1C45680", VA = "0x181C46880")]
private string GetSecKey(object[] from)
{
byte[] array = new byte[16];
int num = 0;
int num2 = 0;
int num3 = 0;
int length = from.Length;
if (num < length)
{
from[num3].Finalize();
int num4 = 0;
byte[] array2;
int length2 = array2.Length;
if (num4 < length2)
{
int length3 = array.Length;
if (num2 < length3)
{
num2++;
num4++;
}
}
num3++;
}
return Convert.ToBase64String(array);
}
// Token: 0x040065A7 RID: 26023
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x40065A7")]
public OnWebSocketOpenDelegate OnOpen;
// Token: 0x040065A8 RID: 26024
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x40065A8")]
public OnWebSocketMessageDelegate OnMessage;
// Token: 0x040065A9 RID: 26025
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x40065A9")]
public OnWebSocketBinaryDelegate OnBinary;
// Token: 0x040065AA RID: 26026
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x40065AA")]
public OnWebSocketClosedDelegate OnClosed;
// Token: 0x040065AB RID: 26027
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x40065AB")]
public OnWebSocketErrorDelegate OnError;
// Token: 0x040065AC RID: 26028
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x40065AC")]
public OnWebSocketErrorDescriptionDelegate OnErrorDesc;
// Token: 0x040065AD RID: 26029
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x40065AD")]
public OnWebSocketIncompleteFrameDelegate OnIncompleteFrame;
// Token: 0x040065AE RID: 26030
[FieldOffset(Offset = "0x68")]
[Token(Token = "0x40065AE")]
private bool requestSent;
// Token: 0x040065AF RID: 26031
[FieldOffset(Offset = "0x70")]
[Token(Token = "0x40065AF")]
private WebSocketResponse webSocket;
}
}
@@ -0,0 +1,895 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;
using BestHTTP.Extensions;
using BestHTTP.Logger;
using BestHTTP.WebSocket.Frames;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018CA RID: 6346
[Token(Token = "0x20018CA")]
public sealed class WebSocketResponse : HTTPResponse, IHeartbeat, IProtocol
{
// Token: 0x170017B3 RID: 6067
// (get) Token: 0x06009524 RID: 38180 RVA: 0x001EAC20 File Offset: 0x001E8E20
// (set) Token: 0x06009525 RID: 38181 RVA: 0x001EAC34 File Offset: 0x001E8E34
[Token(Token = "0x170017B3")]
public WebSocket WebSocket
{
[Token(Token = "0x6009524")]
[Address(RVA = "0x5F4E40", Offset = "0x5F3C40", VA = "0x1805F4E40")]
get;
[Token(Token = "0x6009525")]
[Address(RVA = "0x7CB600", Offset = "0x7CA400", VA = "0x1807CB600")]
internal set;
}
// Token: 0x170017B4 RID: 6068
// (get) Token: 0x06009526 RID: 38182 RVA: 0x001EAC48 File Offset: 0x001E8E48
[Token(Token = "0x170017B4")]
public bool IsClosed
{
[Token(Token = "0x6009526")]
[Address(RVA = "0x1C44C10", Offset = "0x1C43A10", VA = "0x181C44C10", Slot = "7")]
get
{
return this.closed;
}
}
// Token: 0x170017B5 RID: 6069
// (get) Token: 0x06009527 RID: 38183 RVA: 0x001EAC5C File Offset: 0x001E8E5C
// (set) Token: 0x06009528 RID: 38184 RVA: 0x001EAC70 File Offset: 0x001E8E70
[Token(Token = "0x170017B5")]
public TimeSpan PingFrequnecy
{
[Token(Token = "0x6009527")]
[Address(RVA = "0x60CF40", Offset = "0x60BD40", VA = "0x18060CF40")]
get;
[Token(Token = "0x6009528")]
[Address(RVA = "0x7B58A0", Offset = "0x7B46A0", VA = "0x1807B58A0")]
private set;
}
// Token: 0x170017B6 RID: 6070
// (get) Token: 0x06009529 RID: 38185 RVA: 0x001EAC84 File Offset: 0x001E8E84
// (set) Token: 0x0600952A RID: 38186 RVA: 0x001EAC98 File Offset: 0x001E8E98
[Token(Token = "0x170017B6")]
public ushort MaxFragmentSize
{
[Token(Token = "0x6009529")]
[Address(RVA = "0x1C44C30", Offset = "0x1C43A30", VA = "0x181C44C30")]
get;
[Token(Token = "0x600952A")]
[Address(RVA = "0x1C44C40", Offset = "0x1C43A40", VA = "0x181C44C40")]
private set;
}
// Token: 0x170017B7 RID: 6071
// (get) Token: 0x0600952B RID: 38187 RVA: 0x001EACAC File Offset: 0x001E8EAC
[Token(Token = "0x170017B7")]
public int BufferedAmount
{
[Token(Token = "0x600952B")]
[Address(RVA = "0x60CFD0", Offset = "0x60BDD0", VA = "0x18060CFD0")]
get
{
return this._bufferedAmount;
}
}
// Token: 0x170017B8 RID: 6072
// (get) Token: 0x0600952C RID: 38188 RVA: 0x001EACC0 File Offset: 0x001E8EC0
// (set) Token: 0x0600952D RID: 38189 RVA: 0x001EACD4 File Offset: 0x001E8ED4
[Token(Token = "0x170017B8")]
public int Latency
{
[Token(Token = "0x600952C")]
[Address(RVA = "0xD027E0", Offset = "0xD015E0", VA = "0x180D027E0")]
get;
[Token(Token = "0x600952D")]
[Address(RVA = "0xD00030", Offset = "0xCFEE30", VA = "0x180D00030")]
private set;
}
// Token: 0x0600952E RID: 38190 RVA: 0x001EACE8 File Offset: 0x001E8EE8
[Token(Token = "0x600952E")]
[Address(RVA = "0x1C449D0", Offset = "0x1C437D0", VA = "0x181C449D0")]
internal WebSocketResponse(HTTPRequest request, Stream stream, bool isStreamed, bool isFromCache)
{
List<WebSocketFrameReader> list = new List();
this.IncompleteFrames = list;
List<WebSocketFrameReader> list2 = new List();
this.CompletedFrames = list2;
List<WebSocketFrameReader> list3 = new List();
this.frameCache = list3;
object obj = new object();
this.FrameLock = obj;
object obj2 = new object();
this.SendLock = obj2;
List<WebSocketFrame> list4 = new List();
this.unsentFrames = list4;
int num;
AutoResetEvent autoResetEvent = new AutoResetEvent(num != 0);
num = 0;
this.newFrameSignal = autoResetEvent;
DateTime minValue = DateTime.MinValue;
this.lastPing = minValue;
DateTime minValue2 = DateTime.MinValue;
this.lastMessage = minValue2;
CircularBuffer<int> circularBuffer = new CircularBuffer(WebSocketResponse.RTTBufferCapacity);
this.rtts = circularBuffer;
this.<IsClosedManually>k__BackingField = true;
this.MaxFragmentSize = (ushort)((uint)32767);
this.closed = false;
}
// Token: 0x0600952F RID: 38191 RVA: 0x001EADA8 File Offset: 0x001E8FA8
[Token(Token = "0x600952F")]
[Address(RVA = "0x1C44920", Offset = "0x1C43720", VA = "0x181C44920")]
internal void StartReceive()
{
bool flag = ThreadPool.QueueUserWorkItem(new WaitCallback(this.ReceiveThreadFunc));
}
// Token: 0x06009530 RID: 38192 RVA: 0x001EADC8 File Offset: 0x001E8FC8
[Token(Token = "0x6009530")]
[Address(RVA = "0x1C42360", Offset = "0x1C41160", VA = "0x181C42360")]
internal void CloseStream()
{
ConnectionBase connectionWith = HTTPManager.GetConnectionWith(this.baseRequest);
if (connectionWith != 0)
{
connectionWith.Abort((HTTPConnectionStates)((uint)9));
return;
}
}
// Token: 0x06009531 RID: 38193 RVA: 0x001EADF0 File Offset: 0x001E8FF0
[Token(Token = "0x6009531")]
[Address(RVA = "0x1C44450", Offset = "0x1C43250", VA = "0x181C44450")]
public void Send(string message)
{
int num;
WebSocketFrame webSocketFrame;
do
{
num = 0;
if (message == 0)
{
goto IL_A2;
}
object obj = Encoding.UTF8.Clone();
byte[] bytes = Encoding.UTF8.GetBytes(message);
byte[] <Data>k__BackingField = webSocketFrame.<Data>k__BackingField;
if (<Data>k__BackingField == 0)
{
goto IL_99;
}
ushort num2 = this.<MaxFragmentSize>k__BackingField;
if (<Data>k__BackingField.Length <= (int)num2)
{
goto IL_99;
}
WebSocketFrame[] array = webSocketFrame.Fragment(num2);
object sendLock = this.SendLock;
this.Send(webSocketFrame);
if (array != 0 && num < array.Length)
{
WebSocketFrame webSocketFrame2 = array[num];
this.Send(webSocketFrame2);
num++;
}
Monitor.Exit(sendLock);
}
while (num != 0);
if (num != -1)
{
}
IL_99:
this.Send(webSocketFrame);
return;
IL_A2:
ArgumentNullException ex = new ArgumentNullException("message must not be null!");
throw new IndexOutOfRangeException();
}
// Token: 0x06009532 RID: 38194 RVA: 0x001EAEB0 File Offset: 0x001E90B0
[Token(Token = "0x6009532")]
[Address(RVA = "0x1C43D70", Offset = "0x1C42B70", VA = "0x181C43D70")]
public void Send(byte[] data)
{
int num;
WebSocketFrame webSocketFrame;
do
{
num = 0;
if (data == 0)
{
goto IL_9D;
}
int length;
ulong num2;
ulong num3;
webSocketFrame = new WebSocketFrame(this.<WebSocket>k__BackingField, (WebSocketFrameTypes)((ulong)2L), data, (ulong)num, (ulong)length, num2 != 0UL, num3 != 0UL);
length = data.Length;
byte[] <Data>k__BackingField = webSocketFrame.<Data>k__BackingField;
if (<Data>k__BackingField == 0)
{
goto IL_95;
}
ushort num4 = this.<MaxFragmentSize>k__BackingField;
if (<Data>k__BackingField.Length <= (int)num4)
{
goto IL_95;
}
WebSocketFrame[] array = webSocketFrame.Fragment(num4);
object sendLock = this.SendLock;
this.Send(webSocketFrame);
if (array != 0 && num < array.Length)
{
WebSocketFrame webSocketFrame2 = array[num];
this.Send(webSocketFrame2);
num++;
}
Monitor.Exit(sendLock);
}
while (num != 0);
if (num != -1)
{
}
IL_95:
this.Send(webSocketFrame);
return;
IL_9D:
ArgumentNullException ex = new ArgumentNullException("data must not be null!");
throw new IndexOutOfRangeException();
}
// Token: 0x06009533 RID: 38195 RVA: 0x001EAF6C File Offset: 0x001E916C
[Token(Token = "0x6009533")]
[Address(RVA = "0x1C43F90", Offset = "0x1C42D90", VA = "0x181C43F90")]
public void Send(byte[] data, ulong offset, ulong count)
{
int num;
WebSocketFrame webSocketFrame;
do
{
num = 0;
if (data == 0)
{
goto IL_85;
}
int length = data.Length;
byte[] <Data>k__BackingField = webSocketFrame.<Data>k__BackingField;
if (<Data>k__BackingField == 0)
{
goto IL_7D;
}
ushort num2 = this.<MaxFragmentSize>k__BackingField;
if (<Data>k__BackingField.Length <= (int)num2)
{
goto IL_7D;
}
WebSocketFrame[] array = webSocketFrame.Fragment(num2);
object sendLock = this.SendLock;
this.Send(webSocketFrame);
if (array != 0 && num < array.Length)
{
WebSocketFrame webSocketFrame2 = array[num];
this.Send(webSocketFrame2);
num++;
}
Monitor.Exit(sendLock);
}
while (num != 0);
if (num != -1)
{
}
IL_7D:
this.Send(webSocketFrame);
return;
IL_85:
ArgumentNullException ex = new ArgumentNullException("data must not be null!");
throw new IndexOutOfRangeException();
}
// Token: 0x06009534 RID: 38196 RVA: 0x001EB010 File Offset: 0x001E9210
[Token(Token = "0x6009534")]
[Address(RVA = "0x1C44200", Offset = "0x1C43000", VA = "0x181C44200")]
public void Send(WebSocketFrame frame)
{
int num;
do
{
num = 0;
if (frame == 0)
{
goto IL_7C;
}
if (this.closed || this.closeSent)
{
return;
}
object sendLock = this.SendLock;
this.unsentFrames.Add(frame);
if (!this.sendThreadCreated)
{
ILogger logger = HTTPManager.Logger;
bool flag = ThreadPool.QueueUserWorkItem(new WaitCallback(this.SendThreadFunc));
this.sendThreadCreated = true;
}
Monitor.Exit(sendLock);
}
while (num != 0);
if (frame.<Data>k__BackingField != (ulong)0L)
{
}
bool flag2 = this.newFrameSignal.Set();
return;
IL_7C:
ArgumentNullException ex = new ArgumentNullException("frame is null!");
throw new NullReferenceException();
}
// Token: 0x06009535 RID: 38197 RVA: 0x001EB0B0 File Offset: 0x001E92B0
[Token(Token = "0x6009535")]
[Address(RVA = "0x1C42770", Offset = "0x1C41570", VA = "0x181C42770")]
public void Insert(WebSocketFrame frame)
{
int num;
do
{
num = 0;
if (frame == 0)
{
goto IL_83;
}
if (this.closed || this.closeSent)
{
return;
}
object sendLock = this.SendLock;
List<WebSocketFrame> list = this.unsentFrames;
int num2 = 0;
list.Insert(num2, frame);
if (!this.sendThreadCreated)
{
ILogger logger = HTTPManager.Logger;
bool flag = ThreadPool.QueueUserWorkItem(new WaitCallback(this.SendThreadFunc));
this.sendThreadCreated = true;
}
Monitor.Exit(sendLock);
}
while (num != 0);
if (frame.<Data>k__BackingField != (ulong)0L)
{
}
bool flag2 = this.newFrameSignal.Set();
return;
IL_83:
ArgumentNullException ex = new ArgumentNullException("frame is null!");
throw new NullReferenceException();
}
// Token: 0x06009536 RID: 38198 RVA: 0x001EB158 File Offset: 0x001E9358
[Token(Token = "0x6009536")]
[Address(RVA = "0x1C43420", Offset = "0x1C42220", VA = "0x181C43420")]
public void SendNow(WebSocketFrame frame)
{
/*
An exception occurred when decompiling this method (06009536)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.WebSocket.WebSocketResponse::SendNow(BestHTTP.WebSocket.Frames.WebSocketFrame)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_3C:
stloc:ArgumentNullException(var_4_46, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("frame is null!")))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1660
*/;
}
// Token: 0x06009537 RID: 38199 RVA: 0x001EB1AC File Offset: 0x001E93AC
[Token(Token = "0x6009537")]
[Address(RVA = "0x1C42730", Offset = "0x1C41530", VA = "0x181C42730")]
public void Close()
{
}
// Token: 0x06009538 RID: 38200 RVA: 0x001EB1BC File Offset: 0x001E93BC
[Token(Token = "0x6009538")]
[Address(RVA = "0x1C42590", Offset = "0x1C41390", VA = "0x181C42590")]
public void Close(ushort code, string msg)
{
int num;
do
{
num = 0;
if (this.closed)
{
return;
}
object sendLock = this.SendLock;
this.unsentFrames.Clear();
Monitor.Exit(sendLock);
}
while (num != 0);
WebSocket webSocket = this.<WebSocket>k__BackingField;
byte[] array = WebSocket.EncodeCloseData(code, msg);
ulong num2;
int num3;
ulong num4;
ulong num5;
WebSocketFrame webSocketFrame = new WebSocketFrame(webSocket, (WebSocketFrameTypes)((ulong)8L), array, num2, (ulong)num3, num4 != 0UL, num5 != 0UL);
if (array != 0)
{
}
num3 = 0;
this.Send(webSocketFrame);
}
// Token: 0x06009539 RID: 38201 RVA: 0x001EB234 File Offset: 0x001E9434
[Token(Token = "0x6009539")]
[Address(RVA = "0x1C44750", Offset = "0x1C43550", VA = "0x181C44750")]
public void StartPinging(int frequency)
{
Delegate @delegate;
int num;
do
{
TimeSpan timeSpan;
this.<PingFrequnecy>k__BackingField = timeSpan;
DateTime utcNow = DateTime.UtcNow;
this.lastMessage = utcNow;
this.SendPing();
HTTPManager.Heartbeats.Subscribe(this);
Action<bool> onApplicationForegroundStateChanged = HTTPUpdateDelegator.OnApplicationForegroundStateChanged;
Action<bool> action = new Action(this.OnApplicationForegroundStateChanged);
@delegate = Delegate.Combine(onApplicationForegroundStateChanged, action);
num = 0;
}
while (@delegate != 0 && @delegate == 0);
HTTPUpdateDelegator.OnApplicationForegroundStateChanged = num;
}
// Token: 0x0600953A RID: 38202 RVA: 0x001EB2AC File Offset: 0x001E94AC
[Token(Token = "0x600953A")]
[Address(RVA = "0x1C437B0", Offset = "0x1C425B0", VA = "0x181C437B0")]
private void SendThreadFunc(object param)
{
int num;
do
{
num = 0;
List<WebSocketFrame> list = new List();
if (!this.closed && !this.closeSent)
{
AutoResetEvent autoResetEvent = this.newFrameSignal;
object sendLock = this.SendLock;
int size = this.unsentFrames._size;
List<WebSocketFrame> list2 = this.unsentFrames;
list.Clear();
Monitor.Exit(sendLock);
if (num != 0)
{
goto IL_118;
}
if ((ulong)((uint)(-1)) != (ulong)(-1L))
{
}
int size2 = list._size;
list.RemoveAt(size2);
if (!this.closeSent)
{
int num2 = this.Stream.ReadByte();
if (num != 0)
{
goto IL_11E;
}
if ((ulong)((uint)(-1)) != (ulong)(-1L))
{
}
this.closeSent = true;
}
Stream stream = this.Stream;
HTTPRequest baseRequest = this.baseRequest;
baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)5L);
this.baseRequest.<Exception>k__BackingField = baseRequest;
this.baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)4L);
this.closed = true;
}
this.sendThreadCreated = false;
AutoResetEvent autoResetEvent2 = this.newFrameSignal;
this.newFrameSignal = (ulong)0L;
ILogger logger = HTTPManager.Logger;
}
while (num != 0);
return;
IL_118:
throw new NullReferenceException();
IL_11E:
throw new NullReferenceException();
}
// Token: 0x0600953B RID: 38203 RVA: 0x001EB40C File Offset: 0x001E960C
[Token(Token = "0x600953B")]
[Address(RVA = "0x1C42A30", Offset = "0x1C41830", VA = "0x181C42A30")]
private void ReceiveThreadFunc(object param)
{
for (;;)
{
int num = 0;
ReadOnlyBufferedStream readOnlyBufferedStream = new ReadOnlyBufferedStream(this.Stream);
int num2 = 0;
uint num3;
if (!this.closed)
{
DateTime utcNow = DateTime.UtcNow;
this.lastMessage = utcNow;
if (utcNow > (ulong)10L)
{
goto IL_69;
}
if (this.OnIncompleteFrame == (ulong)0L)
{
goto IL_8C;
}
object frameLock = this.FrameLock;
List<WebSocketFrameReader> completedFrames = this.CompletedFrames;
num3 += (uint)1;
Monitor.Exit(frameLock);
if (num != 0)
{
goto IL_247;
}
if (num3 != (uint)(-1))
{
goto IL_69;
}
IL_9F:
WebSocket webSocket = this.<WebSocket>k__BackingField;
object frameLock2 = this.FrameLock;
List<WebSocketFrameReader> completedFrames2 = this.CompletedFrames;
num3 += (uint)1;
Monitor.Exit(frameLock2);
if (num != 0)
{
goto IL_253;
}
if (num3 != (uint)(-1))
{
}
if (this.closeSent || this.closed)
{
continue;
}
WebSocketFrame webSocketFrame;
if (!this.closeSent)
{
this.Send(webSocketFrame);
}
this.closed = true;
this.Send(webSocketFrame);
long num4;
num4 -= num4;
TimeSpan timeSpan = TimeSpan.FromTicks(num4);
CircularBuffer<int> circularBuffer = this.rtts;
int num5 = 0;
circularBuffer.Add(num5);
int num6 = this.CalculateLatency();
this.<Latency>k__BackingField = num6;
int num7 = 0;
Monitor.Exit(circularBuffer);
if (num != 0)
{
goto IL_26B;
}
if (num3 != (uint)(-1))
{
}
IL_154:
this.IncompleteFrames.Add(num7);
uint num8;
this.Close((ushort)num8, "Protocol Error: masked frame received from server!");
this.IncompleteFrames.Clear();
this.baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)5L);
this.closed = true;
HTTPRequest baseRequest;
if (!this.newFrameSignal.Set())
{
baseRequest = this.baseRequest;
baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)5L);
}
this.baseRequest.<Exception>k__BackingField = baseRequest;
this.baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)4L);
this.closed = true;
AutoResetEvent autoResetEvent = this.newFrameSignal;
goto IL_1D8;
IL_69:
if (this.OnIncompleteFrame == (ulong)0L)
{
goto IL_154;
}
object frameLock3 = this.FrameLock;
List<WebSocketFrameReader> completedFrames3 = this.CompletedFrames;
num3 += (uint)1;
IL_8C:
List<WebSocketFrameReader> incompleteFrames = this.IncompleteFrames;
this.IncompleteFrames.Clear();
goto IL_9F;
}
IL_1D8:
num3 += (uint)1;
if (num2 != 0)
{
}
if (num == 0)
{
if (num3 != (uint)(-1))
{
}
HTTPManager.Heartbeats.Unsubscribe(this);
Action<bool> onApplicationForegroundStateChanged = HTTPUpdateDelegator.OnApplicationForegroundStateChanged;
Action<bool> action = new Action(this.OnApplicationForegroundStateChanged);
Delegate @delegate = Delegate.Remove(onApplicationForegroundStateChanged, action);
if (@delegate == 0 || @delegate != 0)
{
HTTPUpdateDelegator.OnApplicationForegroundStateChanged = @delegate;
ILogger logger = HTTPManager.Logger;
if (num == 0)
{
break;
}
}
}
}
return;
IL_247:
throw new NullReferenceException();
IL_253:
throw new NullReferenceException();
IL_26B:
throw new NullReferenceException();
}
// Token: 0x0600953C RID: 38204 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600953C")]
[Address(RVA = "0x1C41D80", Offset = "0x1C40B80", VA = "0x181C41D80", Slot = "8")]
void IProtocol.HandleEvents()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600953D RID: 38205 RVA: 0x001EB6B4 File Offset: 0x001E98B4
[Token(Token = "0x600953D")]
[Address(RVA = "0x1C419D0", Offset = "0x1C407D0", VA = "0x181C419D0", Slot = "6")]
void IHeartbeat.OnHeartbeatUpdate(TimeSpan dif)
{
DateTime utcNow = DateTime.UtcNow;
DateTime dateTime = this.lastPing;
TimeSpan timeSpan = utcNow - dateTime;
TimeSpan timeSpan2 = this.<PingFrequnecy>k__BackingField;
if (timeSpan >= timeSpan2)
{
this.SendPing();
}
DateTime dateTime2 = this.lastMessage;
TimeSpan timeSpan3 = this.<PingFrequnecy>k__BackingField;
DateTime dateTime3 = dateTime2 + timeSpan3;
TimeSpan timeSpan4 = utcNow - dateTime3;
TimeSpan <CloseAfterNoMesssage>k__BackingField = this.<WebSocket>k__BackingField.<CloseAfterNoMesssage>k__BackingField;
if (timeSpan4 > <CloseAfterNoMesssage>k__BackingField)
{
ILogger logger = HTTPManager.Logger;
object[] array = new object[4];
DateTime dateTime4 = this.lastMessage;
if (array != 0)
{
}
array[0] = array;
TimeSpan timeSpan5 = this.<PingFrequnecy>k__BackingField;
if (timeSpan5 != 0)
{
}
array[1] = timeSpan5;
TimeSpan <CloseAfterNoMesssage>k__BackingField2 = this.<WebSocket>k__BackingField.<CloseAfterNoMesssage>k__BackingField;
if (<CloseAfterNoMesssage>k__BackingField2 != 0)
{
}
array[2] = <CloseAfterNoMesssage>k__BackingField2;
if (<CloseAfterNoMesssage>k__BackingField2 != 0)
{
}
array[3] = <CloseAfterNoMesssage>k__BackingField2;
string text = string.Format("No message received in the given time! Closing WebSocket. LastMessage: {0}, PingFrequency: {1}, Close After: {2}, Now: {3}", array);
this.CloseWithError("No message received in the given time!");
}
}
// Token: 0x0600953E RID: 38206 RVA: 0x001EB7BC File Offset: 0x001E99BC
[Token(Token = "0x600953E")]
[Address(RVA = "0x1C429C0", Offset = "0x1C417C0", VA = "0x181C429C0")]
private void OnApplicationForegroundStateChanged(bool isPaused)
{
if (!isPaused)
{
DateTime utcNow = DateTime.UtcNow;
this.lastMessage = utcNow;
}
}
// Token: 0x0600953F RID: 38207 RVA: 0x001EB7DC File Offset: 0x001E99DC
[Token(Token = "0x600953F")]
[Address(RVA = "0x1C435D0", Offset = "0x1C423D0", VA = "0x181C435D0")]
private void SendPing()
{
DateTime utcNow = DateTime.UtcNow;
this.lastPing = utcNow;
DateTime utcNow2 = DateTime.UtcNow;
byte[] array;
ulong num;
int num2;
ulong num3;
ulong num4;
WebSocketFrame webSocketFrame = new WebSocketFrame(this.<WebSocket>k__BackingField, (WebSocketFrameTypes)((ulong)9L), array, num, (ulong)num2, num3 != 0UL, num4 != 0UL);
if (array != 0)
{
}
num2 = 0;
this.Insert(webSocketFrame);
ILogger logger = HTTPManager.Logger;
}
// Token: 0x06009540 RID: 38208 RVA: 0x001EB844 File Offset: 0x001E9A44
[Token(Token = "0x6009540")]
[Address(RVA = "0x1C423E0", Offset = "0x1C411E0", VA = "0x181C423E0")]
private void CloseWithError(string message)
{
Delegate @delegate;
int num;
do
{
HTTPRequest baseRequest = this.baseRequest;
Exception ex = new Exception(message);
baseRequest.<Exception>k__BackingField = ex;
this.baseRequest.<State>k__BackingField = (HTTPRequestStates)((ulong)4L);
this.closed = true;
HTTPManager.Heartbeats.Unsubscribe(this);
Action<bool> onApplicationForegroundStateChanged = HTTPUpdateDelegator.OnApplicationForegroundStateChanged;
Action<bool> action = new Action(this.OnApplicationForegroundStateChanged);
@delegate = Delegate.Remove(onApplicationForegroundStateChanged, action);
num = 0;
}
while (@delegate != 0 && @delegate == 0);
HTTPUpdateDelegator.OnApplicationForegroundStateChanged = num;
bool flag = this.newFrameSignal.Set();
this.CloseStream();
}
// Token: 0x06009541 RID: 38209 RVA: 0x001EB8D4 File Offset: 0x001E9AD4
[Token(Token = "0x6009541")]
[Address(RVA = "0x1C422A0", Offset = "0x1C410A0", VA = "0x181C422A0")]
private int CalculateLatency()
{
CircularBuffer<int> circularBuffer = this.rtts;
int num = 0;
int num2 = circularBuffer[num];
num += num2;
num++;
CircularBuffer<int> circularBuffer2 = this.rtts;
return num;
}
// Token: 0x040065B0 RID: 26032
[Token(Token = "0x40065B0")]
public static int RTTBufferCapacity;
// Token: 0x040065B2 RID: 26034
[FieldOffset(Offset = "0xE0")]
[Token(Token = "0x40065B2")]
public Action<WebSocketResponse, string> OnText;
// Token: 0x040065B3 RID: 26035
[FieldOffset(Offset = "0xE8")]
[Token(Token = "0x40065B3")]
public Action<WebSocketResponse, byte[]> OnBinary;
// Token: 0x040065B4 RID: 26036
[FieldOffset(Offset = "0xF0")]
[Token(Token = "0x40065B4")]
public Action<WebSocketResponse, WebSocketFrameReader> OnIncompleteFrame;
// Token: 0x040065B5 RID: 26037
[FieldOffset(Offset = "0xF8")]
[Token(Token = "0x40065B5")]
public Action<WebSocketResponse, ushort, string> OnClosed;
// Token: 0x040065B8 RID: 26040
[FieldOffset(Offset = "0x10C")]
[Token(Token = "0x40065B8")]
private int _bufferedAmount;
// Token: 0x040065BA RID: 26042
[FieldOffset(Offset = "0x118")]
[Token(Token = "0x40065BA")]
private List<WebSocketFrameReader> IncompleteFrames;
// Token: 0x040065BB RID: 26043
[FieldOffset(Offset = "0x120")]
[Token(Token = "0x40065BB")]
private List<WebSocketFrameReader> CompletedFrames;
// Token: 0x040065BC RID: 26044
[FieldOffset(Offset = "0x128")]
[Token(Token = "0x40065BC")]
private List<WebSocketFrameReader> frameCache;
// Token: 0x040065BD RID: 26045
[FieldOffset(Offset = "0x130")]
[Token(Token = "0x40065BD")]
private WebSocketFrameReader CloseFrame;
// Token: 0x040065BE RID: 26046
[FieldOffset(Offset = "0x150")]
[Token(Token = "0x40065BE")]
private object FrameLock;
// Token: 0x040065BF RID: 26047
[FieldOffset(Offset = "0x158")]
[Token(Token = "0x40065BF")]
private object SendLock;
// Token: 0x040065C0 RID: 26048
[FieldOffset(Offset = "0x160")]
[Token(Token = "0x40065C0")]
private List<WebSocketFrame> unsentFrames;
// Token: 0x040065C1 RID: 26049
[FieldOffset(Offset = "0x168")]
[Token(Token = "0x40065C1")]
private AutoResetEvent newFrameSignal;
// Token: 0x040065C2 RID: 26050
[FieldOffset(Offset = "0x170")]
[Token(Token = "0x40065C2")]
private bool sendThreadCreated;
// Token: 0x040065C3 RID: 26051
[FieldOffset(Offset = "0x171")]
[Token(Token = "0x40065C3")]
private bool closeSent;
// Token: 0x040065C4 RID: 26052
[FieldOffset(Offset = "0x172")]
[Token(Token = "0x40065C4")]
private bool closed;
// Token: 0x040065C5 RID: 26053
[FieldOffset(Offset = "0x178")]
[Token(Token = "0x40065C5")]
private DateTime lastPing;
// Token: 0x040065C6 RID: 26054
[FieldOffset(Offset = "0x180")]
[Token(Token = "0x40065C6")]
private DateTime lastMessage;
// Token: 0x040065C7 RID: 26055
[FieldOffset(Offset = "0x188")]
[Token(Token = "0x40065C7")]
private CircularBuffer<int> rtts;
}
}
@@ -0,0 +1,26 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018C1 RID: 6337
[Token(Token = "0x20018C1")]
public enum WebSocketStates : byte
{
// Token: 0x0400659C RID: 26012
[Token(Token = "0x400659C")]
Connecting,
// Token: 0x0400659D RID: 26013
[Token(Token = "0x400659D")]
Open,
// Token: 0x0400659E RID: 26014
[Token(Token = "0x400659E")]
Closing,
// Token: 0x0400659F RID: 26015
[Token(Token = "0x400659F")]
Closed,
// Token: 0x040065A0 RID: 26016
[Token(Token = "0x40065A0")]
Unknown
}
}
@@ -0,0 +1,50 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.WebSocket
{
// Token: 0x020018CB RID: 6347
[Token(Token = "0x20018CB")]
public enum WebSocketStausCodes : ushort
{
// Token: 0x040065C9 RID: 26057
[Token(Token = "0x40065C9")]
NormalClosure = 1000,
// Token: 0x040065CA RID: 26058
[Token(Token = "0x40065CA")]
GoingAway,
// Token: 0x040065CB RID: 26059
[Token(Token = "0x40065CB")]
ProtocolError,
// Token: 0x040065CC RID: 26060
[Token(Token = "0x40065CC")]
WrongDataType,
// Token: 0x040065CD RID: 26061
[Token(Token = "0x40065CD")]
Reserved,
// Token: 0x040065CE RID: 26062
[Token(Token = "0x40065CE")]
NoStatusCode,
// Token: 0x040065CF RID: 26063
[Token(Token = "0x40065CF")]
ClosedAbnormally,
// Token: 0x040065D0 RID: 26064
[Token(Token = "0x40065D0")]
DataError,
// Token: 0x040065D1 RID: 26065
[Token(Token = "0x40065D1")]
PolicyError,
// Token: 0x040065D2 RID: 26066
[Token(Token = "0x40065D2")]
TooBigMessage,
// Token: 0x040065D3 RID: 26067
[Token(Token = "0x40065D3")]
ExtensionExpected,
// Token: 0x040065D4 RID: 26068
[Token(Token = "0x40065D4")]
WrongRequest,
// Token: 0x040065D5 RID: 26069
[Token(Token = "0x40065D5")]
TLSHandshakeError = 1015
}
}