using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Threading; using Cpp2IlInjected; namespace BestHTTP.Extensions { // Token: 0x020019BA RID: 6586 [Token(Token = "0x20019BA")] [StructLayout(3)] public sealed class HeartbeatManager { // Token: 0x0600B10F RID: 45327 RVA: 0x00295C40 File Offset: 0x00293E40 [Token(Token = "0x600B10F")] [Address(RVA = "0x1C9DAB0", Offset = "0x1C9C4B0", VA = "0x181C9DAB0")] public void Subscribe(IHeartbeat heartbeat) { int num; do { num = 0; List heartbeats = this.Heartbeats; if (!this.Heartbeats.Contains(heartbeat)) { this.Heartbeats.Add(heartbeat); } Monitor.Exit(heartbeats); if (num != -1) { } } while (num != 0); } // Token: 0x0600B110 RID: 45328 RVA: 0x00295C8C File Offset: 0x00293E8C [Token(Token = "0x600B110")] [Address(RVA = "0x1C9DBC0", Offset = "0x1C9C5C0", VA = "0x181C9DBC0")] public void Unsubscribe(IHeartbeat heartbeat) { int num; do { num = 0; List heartbeats = this.Heartbeats; bool flag = this.Heartbeats.Remove(heartbeat); Monitor.Exit(heartbeats); if (num != -1) { } } while (num != 0); } // Token: 0x0600B111 RID: 45329 RVA: 0x00295CC4 File Offset: 0x00293EC4 [Token(Token = "0x600B111")] [Address(RVA = "0x1C9DCB0", Offset = "0x1C9C6B0", VA = "0x181C9DCB0")] public void Update() { int num = 0; DateTime lastUpdate = this.LastUpdate; DateTime minValue = DateTime.MinValue; if (!(lastUpdate == minValue)) { DateTime utcNow = DateTime.UtcNow; DateTime lastUpdate2 = this.LastUpdate; TimeSpan timeSpan = utcNow - lastUpdate2; DateTime utcNow2 = DateTime.UtcNow; this.LastUpdate = utcNow2; List heartbeats = this.Heartbeats; IHeartbeat[] updateArray = this.UpdateArray; if (updateArray != 0) { int size = this.Heartbeats._size; if (updateArray.Length >= size) { goto IL_7F; } } List heartbeats2 = this.Heartbeats; IL_7F: int size2 = this.Heartbeats._size; List heartbeats3 = this.Heartbeats; int num2 = 0; Monitor.Exit(heartbeats); if (num != -1) { } if (num != 0) { throw new IndexOutOfRangeException(); } IHeartbeat heartbeat = this.UpdateArray[num2]; num2++; } DateTime utcNow3 = DateTime.UtcNow; this.LastUpdate = utcNow3; } // Token: 0x0600B112 RID: 45330 RVA: 0x00295DC8 File Offset: 0x00293FC8 [Token(Token = "0x600B112")] [Address(RVA = "0x1C9DF60", Offset = "0x1C9C960", VA = "0x181C9DF60")] public HeartbeatManager() { List list = new List(); this.Heartbeats = list; DateTime minValue = DateTime.MinValue; this.LastUpdate = minValue; base..ctor(); } // Token: 0x04007427 RID: 29735 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4007427")] private List Heartbeats; // Token: 0x04007428 RID: 29736 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x4007428")] private IHeartbeat[] UpdateArray; // Token: 0x04007429 RID: 29737 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x4007429")] private DateTime LastUpdate; } }