using System; using System.Collections.Generic; using System.Threading; using Cpp2IlInjected; namespace BestHTTP.Extensions { // Token: 0x02002077 RID: 8311 [Token(Token = "0x2002077")] public sealed class HeartbeatManager { // Token: 0x0600D0B7 RID: 53431 RVA: 0x002F68AC File Offset: 0x002F4AAC [Token(Token = "0x600D0B7")] [Address(RVA = "0x2A7FEE0", Offset = "0x2A7EEE0", VA = "0x182A7FEE0")] 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); } while (num != 0); } // Token: 0x0600D0B8 RID: 53432 RVA: 0x002F68F4 File Offset: 0x002F4AF4 [Token(Token = "0x600D0B8")] [Address(RVA = "0x2A7FFD0", Offset = "0x2A7EFD0", VA = "0x182A7FFD0")] public void Unsubscribe(IHeartbeat heartbeat) { int num; do { num = 0; List heartbeats = this.Heartbeats; bool flag = this.Heartbeats.Remove(heartbeat); Monitor.Exit(heartbeats); } while (num != 0); } // Token: 0x0600D0B9 RID: 53433 RVA: 0x002F6928 File Offset: 0x002F4B28 [Token(Token = "0x600D0B9")] [Address(RVA = "0x2A800A0", Offset = "0x2A7F0A0", VA = "0x182A800A0")] 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 != 0) { throw new IndexOutOfRangeException(); } IHeartbeat heartbeat = this.UpdateArray[num2]; num2++; } DateTime utcNow3 = DateTime.UtcNow; this.LastUpdate = utcNow3; } // Token: 0x0600D0BA RID: 53434 RVA: 0x002F6A28 File Offset: 0x002F4C28 [Token(Token = "0x600D0BA")] [Address(RVA = "0x2A80320", Offset = "0x2A7F320", VA = "0x182A80320")] public HeartbeatManager() { List list = new List(); this.Heartbeats = list; DateTime minValue = DateTime.MinValue; this.LastUpdate = minValue; base..ctor(); } // Token: 0x04008423 RID: 33827 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4008423")] private List Heartbeats; // Token: 0x04008424 RID: 33828 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4008424")] private IHeartbeat[] UpdateArray; // Token: 0x04008425 RID: 33829 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4008425")] private DateTime LastUpdate; } }