oh dear
This commit is contained in:
@@ -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 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// 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 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// 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 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user