This commit is contained in:
niko
2026-04-11 22:19:20 +02:00
parent 45b857ff11
commit 8fc35183db
17034 changed files with 2863552 additions and 0 deletions
@@ -0,0 +1,549 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
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: 0x020018EF RID: 6383
[Token(Token = "0x20018EF")]
internal sealed class WebSocketTransport : ITransport
{
// Token: 0x170017E8 RID: 6120
// (get) Token: 0x0600962A RID: 38442 RVA: 0x001EDE60 File Offset: 0x001EC060
[Token(Token = "0x170017E8")]
public TransportTypes TransportType
{
[Token(Token = "0x600962A")]
[Address(RVA = "0x43E630", Offset = "0x43D430", VA = "0x18043E630", Slot = "5")]
get
{
}
}
// Token: 0x170017E9 RID: 6121
// (get) Token: 0x0600962B RID: 38443 RVA: 0x001EDE70 File Offset: 0x001EC070
[Token(Token = "0x170017E9")]
public TransferModes TransferMode
{
[Token(Token = "0x600962B")]
[Address(RVA = "0x43E630", Offset = "0x43D430", VA = "0x18043E630", Slot = "4")]
get
{
}
}
// Token: 0x170017EA RID: 6122
// (get) Token: 0x0600962C RID: 38444 RVA: 0x001EDE80 File Offset: 0x001EC080
// (set) Token: 0x0600962D RID: 38445 RVA: 0x001EDE94 File Offset: 0x001EC094
[Token(Token = "0x170017EA")]
public TransportStates State
{
[Token(Token = "0x600962C")]
[Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560", Slot = "6")]
get
{
return this._state;
}
[Token(Token = "0x600962D")]
[Address(RVA = "0x1C464E0", Offset = "0x1C452E0", VA = "0x181C464E0")]
private set
{
if (this._state != value)
{
Action<TransportStates, TransportStates> onStateChanged = this.OnStateChanged;
this._state = value;
if (onStateChanged != 0)
{
}
}
}
}
// Token: 0x170017EB RID: 6123
// (get) Token: 0x0600962E RID: 38446 RVA: 0x001EDEC0 File Offset: 0x001EC0C0
// (set) Token: 0x0600962F RID: 38447 RVA: 0x001EDED4 File Offset: 0x001EC0D4
[Token(Token = "0x170017EB")]
public string ErrorReason
{
[Token(Token = "0x600962E")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40", Slot = "7")]
get;
[Token(Token = "0x600962F")]
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
private set;
}
// Token: 0x140000C9 RID: 201
// (add) Token: 0x06009630 RID: 38448 RVA: 0x001EDEE8 File Offset: 0x001EC0E8
// (remove) Token: 0x06009631 RID: 38449 RVA: 0x001EDF10 File Offset: 0x001EC110
[Token(Token = "0x140000C9")]
public event Action<TransportStates, TransportStates> OnStateChanged
{
[Token(Token = "0x6009630")]
[Address(RVA = "0x1C463A0", Offset = "0x1C451A0", VA = "0x181C463A0", 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 = "0x6009631")]
[Address(RVA = "0x1C46440", Offset = "0x1C45240", VA = "0x181C46440", 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: 0x06009632 RID: 38450 RVA: 0x001EDF38 File Offset: 0x001EC138
[Token(Token = "0x6009632")]
[Address(RVA = "0x1C462E0", Offset = "0x1C450E0", VA = "0x181C462E0")]
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: 0x06009633 RID: 38451 RVA: 0x001EDF88 File Offset: 0x001EC188
[Token(Token = "0x6009633")]
[Address(RVA = "0x1C44E90", Offset = "0x1C43C90", VA = "0x181C44E90", 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: 0x06009634 RID: 38452 RVA: 0x001EE2C8 File Offset: 0x001EC4C8
[Token(Token = "0x6009634")]
[Address(RVA = "0x1C44C50", Offset = "0x1C43A50", VA = "0x181C44C50", 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: 0x06009635 RID: 38453 RVA: 0x001EE304 File Offset: 0x001EC504
[Token(Token = "0x6009635")]
[Address(RVA = "0x1C460F0", Offset = "0x1C44EF0", VA = "0x181C460F0")]
private void OnOpen(WebSocket webSocket)
{
ILogger logger = HTTPManager.Logger;
IProtocol <Protocol>k__BackingField = this.connection.<Protocol>k__BackingField;
string text;
byte[] array = JsonProtocol.WithSeparator(text);
throw new NullReferenceException();
}
// Token: 0x06009636 RID: 38454 RVA: 0x001EE334 File Offset: 0x001EC534
[Token(Token = "0x6009636")]
[Address(RVA = "0x1C461E0", Offset = "0x1C44FE0", VA = "0x181C461E0")]
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: 0x06009637 RID: 38455 RVA: 0x001EE378 File Offset: 0x001EC578
[Token(Token = "0x6009637")]
[Address(RVA = "0x1C45760", Offset = "0x1C44560", VA = "0x181C45760")]
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: 0x06009638 RID: 38456 RVA: 0x001EE3F8 File Offset: 0x001EC5F8
[Token(Token = "0x6009638")]
[Address(RVA = "0x1C45EB0", Offset = "0x1C44CB0", VA = "0x181C45EB0")]
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;
this.messages.Clear();
}
while (num != 0);
this.HandleHandshakeResponse(data);
}
// Token: 0x06009639 RID: 38457 RVA: 0x001EE484 File Offset: 0x001EC684
[Token(Token = "0x6009639")]
[Address(RVA = "0x1C458B0", Offset = "0x1C446B0", VA = "0x181C458B0")]
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;
this.messages.Clear();
}
while (num != 0);
string @string = Encoding.UTF8.GetString(data);
this.HandleHandshakeResponse(@string);
}
// Token: 0x0600963A RID: 38458 RVA: 0x001EE528 File Offset: 0x001EC728
[Token(Token = "0x600963A")]
[Address(RVA = "0x1C45DC0", Offset = "0x1C44BC0", VA = "0x181C45DC0")]
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: 0x0600963B RID: 38459 RVA: 0x001EE584 File Offset: 0x001EC784
[Token(Token = "0x600963B")]
[Address(RVA = "0x1C45B30", Offset = "0x1C44930", VA = "0x181C45B30")]
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: 0x0600963C RID: 38460 RVA: 0x001EE624 File Offset: 0x001EC824
[Token(Token = "0x600963C")]
[Address(RVA = "0x1C44CB0", Offset = "0x1C43AB0", VA = "0x181C44CB0", 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: 0x0600963D RID: 38461 RVA: 0x001EE6EC File Offset: 0x001EC8EC
[Token(Token = "0x600963D")]
[Address(RVA = "0x1C45600", Offset = "0x1C44400", VA = "0x181C45600")]
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: 0x04006650 RID: 26192
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006650")]
private TransportStates _state;
// Token: 0x04006653 RID: 26195
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4006653")]
private WebSocket webSocket;
// Token: 0x04006654 RID: 26196
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4006654")]
private HubConnection connection;
// Token: 0x04006655 RID: 26197
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x4006655")]
private List<Message> messages;
}
}