This commit is contained in:
niko
2026-04-08 23:40:05 +02:00
parent d6894bcbc7
commit 18dc73f922
7750 changed files with 1795369 additions and 0 deletions
@@ -0,0 +1,564 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using BestHTTP.Decompression.Zlib;
using BestHTTP.JSON;
using BestHTTP.Logger;
using BestHTTP.SignalRCore.Messages;
using BestHTTP.WebSocket;
using BestHTTP.WebSocket.Extensions;
using Cpp2IlInjected;
namespace BestHTTP.SignalRCore.Transports
{
// Token: 0x02001312 RID: 4882
[Token(Token = "0x2001312")]
[StructLayout(3)]
internal sealed class WebSocketTransport : ITransport
{
// Token: 0x170013E7 RID: 5095
// (get) Token: 0x06007A50 RID: 31312 RVA: 0x00196520 File Offset: 0x00194720
[Token(Token = "0x170013E7")]
public TransportTypes TransportType
{
[Token(Token = "0x6007A50")]
[Address(RVA = "0x3F8880", Offset = "0x3F7280", VA = "0x1803F8880", Slot = "5")]
get
{
}
}
// Token: 0x170013E8 RID: 5096
// (get) Token: 0x06007A51 RID: 31313 RVA: 0x00196530 File Offset: 0x00194730
[Token(Token = "0x170013E8")]
public TransferModes TransferMode
{
[Token(Token = "0x6007A51")]
[Address(RVA = "0x3F8880", Offset = "0x3F7280", VA = "0x1803F8880", Slot = "4")]
get
{
}
}
// Token: 0x170013E9 RID: 5097
// (get) Token: 0x06007A52 RID: 31314 RVA: 0x00196540 File Offset: 0x00194740
// (set) Token: 0x06007A53 RID: 31315 RVA: 0x00196554 File Offset: 0x00194754
[Token(Token = "0x170013E9")]
public TransportStates State
{
[Token(Token = "0x6007A52")]
[Address(RVA = "0x3C1C50", Offset = "0x3C0650", VA = "0x1803C1C50", Slot = "6")]
get
{
return this._state;
}
[Token(Token = "0x6007A53")]
[Address(RVA = "0x6FE160", Offset = "0x6FCB60", VA = "0x1806FE160")]
private set
{
if (this._state != value)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = value;
if (onStateChanged != 0)
{
}
}
}
}
// Token: 0x170013EA RID: 5098
// (get) Token: 0x06007A54 RID: 31316 RVA: 0x00196580 File Offset: 0x00194780
// (set) Token: 0x06007A55 RID: 31317 RVA: 0x00196594 File Offset: 0x00194794
[Token(Token = "0x170013EA")]
public string ErrorReason
{
[Token(Token = "0x6007A54")]
[Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240", Slot = "7")]
get;
[Token(Token = "0x6007A55")]
[Address(RVA = "0x3C1280", Offset = "0x3BFC80", VA = "0x1803C1280")]
private set;
}
// Token: 0x140000B5 RID: 181
// (add) Token: 0x06007A56 RID: 31318 RVA: 0x001965A8 File Offset: 0x001947A8
// (remove) Token: 0x06007A57 RID: 31319 RVA: 0x001965D0 File Offset: 0x001947D0
[Token(Token = "0x140000B5")]
public event Action<TransportStates, TransportStates> OnStateChanged
{
[Token(Token = "0x6007A56")]
[Address(RVA = "0x6FE020", Offset = "0x6FCA20", VA = "0x1806FE020", Slot = "8")]
[CompilerGenerated]
add
{
Action<TransportStates, TransportStates> onStateChanged;
Delegate @delegate;
do
{
onStateChanged = this.OnStateChanged;
@delegate = Delegate.Combine(onStateChanged, value);
}
while (@delegate != 0 && @delegate == 0);
while (@delegate != onStateChanged)
{
}
}
[Token(Token = "0x6007A57")]
[Address(RVA = "0x6FE0C0", Offset = "0x6FCAC0", VA = "0x1806FE0C0", Slot = "9")]
[CompilerGenerated]
remove
{
Action<TransportStates, TransportStates> onStateChanged;
Delegate @delegate;
do
{
onStateChanged = this.OnStateChanged;
@delegate = Delegate.Remove(onStateChanged, value);
}
while (@delegate != 0 && @delegate == 0);
while (@delegate != onStateChanged)
{
}
}
}
// Token: 0x06007A58 RID: 31320 RVA: 0x001965F8 File Offset: 0x001947F8
[Token(Token = "0x6007A58")]
[Address(RVA = "0x6FDF60", Offset = "0x6FC960", VA = "0x1806FDF60")]
public WebSocketTransport(HubConnection con)
{
List<Message> list = new List();
this.messages = list;
base..ctor();
this.connection = con;
TransportStates state = this._state;
if (state != TransportStates.Initial)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = (TransportStates)((ulong)0L);
if (onStateChanged != 0)
{
int num = 0;
onStateChanged(state, num);
}
}
}
// Token: 0x06007A59 RID: 31321 RVA: 0x00196648 File Offset: 0x00194848
[Token(Token = "0x6007A59")]
[Address(RVA = "0x6FCA50", Offset = "0x6FB450", VA = "0x1806FCA50", Slot = "10")]
void ITransport.StartConnect()
{
WebSocket webSocket7;
Delegate delegate5;
for (;;)
{
ILogger logger = HTTPManager.Logger;
WebSocket webSocket = this.webSocket;
int num = 0;
if (webSocket == 0)
{
Uri <Uri>k__BackingField = this.connection.<Uri>k__BackingField;
HubConnection hubConnection = this.connection;
if (hubConnection.<NegotiationResult>k__BackingField != num)
{
UriBuilder uriBuilder = new UriBuilder(<Uri>k__BackingField);
StringBuilder stringBuilder = new StringBuilder();
string query = <Uri>k__BackingField.Query;
StringBuilder stringBuilder2 = stringBuilder.Append(query);
string <ConnectionId>k__BackingField = this.connection.<NegotiationResult>k__BackingField.<ConnectionId>k__BackingField;
if (stringBuilder2 == 0)
{
StringBuilder stringBuilder3 = stringBuilder.Append("&id=");
string <ConnectionId>k__BackingField2 = this.connection.<NegotiationResult>k__BackingField.<ConnectionId>k__BackingField;
StringBuilder stringBuilder4 = stringBuilder3.Append(<ConnectionId>k__BackingField2);
}
int hashCode = stringBuilder.GetHashCode();
Uri uri = uriBuilder.Uri;
}
if (hubConnection.<AuthenticationProvider>k__BackingField != 0 && num < logger)
{
num += num;
num++;
}
ILogger logger2 = HTTPManager.Logger;
int hashCode2 = num.GetHashCode();
string empty = string.Empty;
IExtension[] array = new IExtension[1];
int num2 = 0;
PerMessageCompression perMessageCompression;
perMessageCompression.FieldGetter(num2, empty, empty);
perMessageCompression.<Level>k__BackingField = (CompressionLevel)((ulong)6L);
perMessageCompression.<ClientNoContextTakeover>k__BackingField = num != 0;
perMessageCompression.<ClientMaxWindowBits>k__BackingField = (int)((ulong)15L);
perMessageCompression.<ServerMaxWindowBits>k__BackingField = (int)((ulong)15L);
perMessageCompression.<MinimumDataLegthToCompress>k__BackingField = (int)((ulong)256L);
array[0] = perMessageCompression;
WebSocket webSocket2;
webSocket2.<Extensions>k__BackingField = array;
this.webSocket = webSocket2;
}
WebSocket webSocket3;
if (this.connection.<AuthenticationProvider>k__BackingField != 0)
{
webSocket3 = this.webSocket;
}
OnWebSocketOpenDelegate onOpen = webSocket3.OnOpen;
OnWebSocketOpenDelegate onWebSocketOpenDelegate;
onWebSocketOpenDelegate.method_ptr = ldftn(OnOpen);
onWebSocketOpenDelegate.method = ldftn(OnOpen);
onWebSocketOpenDelegate.m_target = this;
Delegate @delegate = Delegate.Combine(onOpen, onWebSocketOpenDelegate);
if (@delegate == 0 || @delegate != 0)
{
webSocket3.OnOpen = @delegate;
WebSocket webSocket4 = this.webSocket;
OnWebSocketMessageDelegate onMessage = webSocket4.OnMessage;
OnWebSocketMessageDelegate onWebSocketMessageDelegate;
onWebSocketMessageDelegate.method_ptr = ldftn(OnMessage);
onWebSocketMessageDelegate.method = ldftn(OnMessage);
onWebSocketMessageDelegate.m_target = this;
Delegate delegate2 = Delegate.Combine(onMessage, onWebSocketMessageDelegate);
if (delegate2 == 0 || delegate2 != 0)
{
webSocket4.OnMessage = delegate2;
WebSocket webSocket5 = this.webSocket;
OnWebSocketBinaryDelegate onBinary = webSocket5.OnBinary;
OnWebSocketBinaryDelegate onWebSocketBinaryDelegate;
onWebSocketBinaryDelegate.method_ptr = ldftn(OnBinary);
onWebSocketBinaryDelegate.method = ldftn(OnBinary);
onWebSocketBinaryDelegate.m_target = this;
Delegate delegate3 = Delegate.Combine(onBinary, onWebSocketBinaryDelegate);
if (delegate3 == 0 || delegate3 != 0)
{
webSocket5.OnBinary = delegate3;
WebSocket webSocket6 = this.webSocket;
OnWebSocketErrorDescriptionDelegate onErrorDesc = webSocket6.OnErrorDesc;
OnWebSocketErrorDescriptionDelegate onWebSocketErrorDescriptionDelegate;
onWebSocketErrorDescriptionDelegate.method_ptr = ldftn(OnError);
onWebSocketErrorDescriptionDelegate.method = ldftn(OnError);
onWebSocketErrorDescriptionDelegate.m_target = this;
Delegate delegate4 = Delegate.Combine(onErrorDesc, onWebSocketErrorDescriptionDelegate);
if (delegate4 == 0 || delegate4 != 0)
{
webSocket6.OnErrorDesc = delegate4;
webSocket7 = this.webSocket;
OnWebSocketClosedDelegate onClosed = webSocket7.OnClosed;
OnWebSocketClosedDelegate onWebSocketClosedDelegate;
onWebSocketClosedDelegate.method_ptr = ldftn(OnClosed);
onWebSocketClosedDelegate.method = ldftn(OnClosed);
onWebSocketClosedDelegate.m_target = this;
delegate5 = Delegate.Combine(onClosed, onWebSocketClosedDelegate);
if (delegate5 == 0 || delegate5 != 0)
{
break;
}
}
}
}
}
}
webSocket7.OnClosed = delegate5;
this.webSocket.Open();
if (this._state != TransportStates.Connecting)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = (TransportStates)((ulong)1L);
if (onStateChanged != 0)
{
}
}
}
// Token: 0x06007A5A RID: 31322 RVA: 0x00196988 File Offset: 0x00194B88
[Token(Token = "0x6007A5A")]
[Address(RVA = "0x6FC810", Offset = "0x6FB210", VA = "0x1806FC810", Slot = "12")]
void ITransport.Send(byte[] msg)
{
WebSocket webSocket = this.webSocket;
WebSocketResponse webSocketResponse = webSocket.webSocket;
if (webSocketResponse != 0 && !webSocketResponse.closed)
{
webSocket.webSocket.Send(msg);
}
}
// Token: 0x06007A5B RID: 31323 RVA: 0x001969C4 File Offset: 0x00194BC4
[Token(Token = "0x6007A5B")]
[Address(RVA = "0x6FDCF0", Offset = "0x6FC6F0", VA = "0x1806FDCF0")]
private void OnOpen(WebSocket webSocket)
{
ILogger logger = HTTPManager.Logger;
IProtocol <Protocol>k__BackingField = this.connection.<Protocol>k__BackingField;
int num = 0;
if (num < logger)
{
num += num;
num++;
}
byte[] array = JsonProtocol.WithSeparator(string.Format("{{\"protocol\":\"{0}\", \"version\": 1}}", num));
throw new NullReferenceException();
}
// Token: 0x06007A5C RID: 31324 RVA: 0x00196A14 File Offset: 0x00194C14
[Token(Token = "0x6007A5C")]
[Address(RVA = "0x6FDE60", Offset = "0x6FC860", VA = "0x1806FDE60")]
private string ParseHandshakeResponse(string data)
{
int num = 0;
object obj = Json.Decode(data);
if (obj != 0 && obj != 0)
{
bool flag;
if (!flag)
{
}
int hashCode = num.GetHashCode();
}
return "Couldn't parse json data: " + data;
}
// Token: 0x06007A5D RID: 31325 RVA: 0x00196A58 File Offset: 0x00194C58
[Token(Token = "0x6007A5D")]
[Address(RVA = "0x6FD320", Offset = "0x6FBD20", VA = "0x1806FD320")]
private void HandleHandshakeResponse(string data)
{
int num = 0;
object obj = Json.Decode(data);
if (obj != 0 && obj != 0)
{
bool flag;
if (!flag)
{
goto IL_2F;
}
int hashCode = num.GetHashCode();
}
string text = "Couldn't parse json data: " + data;
IL_2F:
this.<ErrorReason>k__BackingField = text;
bool flag2 = string.IsNullOrEmpty(text);
TransportStates state = this._state;
if (state != TransportStates.Connected)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = TransportStates.Connected;
if (onStateChanged != 0)
{
onStateChanged(state, 2);
}
}
}
// Token: 0x06007A5E RID: 31326 RVA: 0x00196AD8 File Offset: 0x00194CD8
[Token(Token = "0x6007A5E")]
[Address(RVA = "0x6FDA90", Offset = "0x6FC490", VA = "0x1806FDA90")]
private void OnMessage(WebSocket webSocket, string data)
{
int num;
do
{
num = 0;
if (this._state == TransportStates.Connecting)
{
break;
}
this.messages.Clear();
IProtocol <Protocol>k__BackingField = this.connection.<Protocol>k__BackingField;
if (num < data)
{
num += num;
num++;
}
HubConnection hubConnection = this.connection;
List<Message> list = this.messages;
hubConnection.OnMessages(list);
list += list;
ILogger logger = HTTPManager.Logger;
num++;
this.messages.Clear();
if (num != -1)
{
}
}
while (num != 0);
this.HandleHandshakeResponse(data);
}
// Token: 0x06007A5F RID: 31327 RVA: 0x00196B6C File Offset: 0x00194D6C
[Token(Token = "0x6007A5F")]
[Address(RVA = "0x6FD470", Offset = "0x6FBE70", VA = "0x1806FD470")]
private void OnBinary(WebSocket webSocket, byte[] data)
{
int num;
do
{
num = 0;
if (this._state == TransportStates.Connecting)
{
break;
}
this.messages.Clear();
IProtocol <Protocol>k__BackingField = this.connection.<Protocol>k__BackingField;
if (num < data)
{
num += num;
num++;
}
HubConnection hubConnection = this.connection;
List<Message> list = this.messages;
hubConnection.OnMessages(list);
list += list;
ILogger logger = HTTPManager.Logger;
num++;
this.messages.Clear();
if (num != -1)
{
}
}
while (num != 0);
string @string = Encoding.UTF8.GetString(data);
this.HandleHandshakeResponse(@string);
}
// Token: 0x06007A60 RID: 31328 RVA: 0x00196C18 File Offset: 0x00194E18
[Token(Token = "0x6007A60")]
[Address(RVA = "0x6FD9A0", Offset = "0x6FC3A0", VA = "0x1806FD9A0")]
private void OnError(WebSocket webSocket, string reason)
{
ILogger logger = HTTPManager.Logger;
string text = "OnError: " + reason;
this.<ErrorReason>k__BackingField = reason;
TransportStates state = this._state;
if (state != TransportStates.Failed)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = (TransportStates)((ulong)4L);
if (onStateChanged != 0)
{
onStateChanged(state, (uint)4);
}
}
}
// Token: 0x06007A61 RID: 31329 RVA: 0x00196C74 File Offset: 0x00194E74
[Token(Token = "0x6007A61")]
[Address(RVA = "0x6FD710", Offset = "0x6FC110", VA = "0x1806FD710")]
private void OnClosed(WebSocket webSocket, ushort code, string message)
{
ILogger logger = HTTPManager.Logger;
object[] array = new object[4];
if ("OnClosed: " != 0)
{
}
array[0] = "OnClosed: ";
if (array != 0)
{
}
array[1] = array;
if (" " != 0)
{
}
array[2] = " ";
if (message != 0)
{
}
array[3] = message;
string text = string.Concat(array);
this.webSocket = (ulong)0L;
TransportStates state = this._state;
if (state != TransportStates.Closed)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = (TransportStates)((ulong)5L);
if (onStateChanged != 0)
{
onStateChanged(state, (uint)5);
}
}
}
// Token: 0x06007A62 RID: 31330 RVA: 0x00196D14 File Offset: 0x00194F14
[Token(Token = "0x6007A62")]
[Address(RVA = "0x6FC870", Offset = "0x6FB270", VA = "0x1806FC870", Slot = "11")]
void ITransport.StartClose()
{
ILogger logger = HTTPManager.Logger;
if (this.webSocket == (ulong)0L)
{
TransportStates state = this._state;
if (state != TransportStates.Closed)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = (TransportStates)((ulong)5L);
if (onStateChanged != 0)
{
onStateChanged(state, (uint)5);
return;
}
}
return;
}
TransportStates state2 = this._state;
if (state2 != TransportStates.Closing)
{
Action<TransportStates, TransportStates> onStateChanged2 = this.OnStateChanged;
this._state = (TransportStates)((ulong)3L);
if (onStateChanged2 != 0)
{
onStateChanged2(state2, (uint)3);
}
}
WebSocket webSocket = this.webSocket;
WebSocketStates <State>k__BackingField = webSocket.<State>k__BackingField;
webSocket.<State>k__BackingField = (WebSocketStates)((ulong)2L);
WebSocketResponse webSocketResponse = webSocket.webSocket;
}
// Token: 0x06007A63 RID: 31331 RVA: 0x00196DDC File Offset: 0x00194FDC
[Token(Token = "0x6007A63")]
[Address(RVA = "0x6FD1C0", Offset = "0x6FBBC0", VA = "0x1806FD1C0")]
private Uri BuildUri(Uri baseUri)
{
if (this.connection.<NegotiationResult>k__BackingField != (ulong)0L)
{
UriBuilder uriBuilder = new UriBuilder(baseUri);
StringBuilder stringBuilder = new StringBuilder();
string query = baseUri.Query;
StringBuilder stringBuilder2 = stringBuilder.Append(query);
if (!string.IsNullOrEmpty(this.connection.<NegotiationResult>k__BackingField.<ConnectionId>k__BackingField))
{
StringBuilder stringBuilder3 = stringBuilder.Append("&id=");
string <ConnectionId>k__BackingField = this.connection.<NegotiationResult>k__BackingField.<ConnectionId>k__BackingField;
StringBuilder stringBuilder4 = stringBuilder3.Append(<ConnectionId>k__BackingField);
}
int hashCode = stringBuilder.GetHashCode();
return uriBuilder.Uri;
}
throw new NullReferenceException();
}
// Token: 0x0400580D RID: 22541
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x400580D")]
private TransportStates _state;
// Token: 0x04005810 RID: 22544
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
[Token(Token = "0x4005810")]
private WebSocket webSocket;
// Token: 0x04005811 RID: 22545
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
[Token(Token = "0x4005811")]
private HubConnection connection;
// Token: 0x04005812 RID: 22546
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
[Token(Token = "0x4005812")]
private List<Message> messages;
}
}