using System; using System.Collections.Generic; using System.Threading; using Cpp2IlInjected; namespace BestHTTP.Extensions { // Token: 0x02001F97 RID: 8087 [Token(Token = "0x2001F97")] public sealed class HeartbeatManager { // Token: 0x0600CCE9 RID: 52457 RVA: 0x002EE154 File Offset: 0x002EC354 [Token(Token = "0x600CCE9")] [Address(RVA = "0x1728640", Offset = "0x1727440", VA = "0x181728640")] 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: 0x0600CCEA RID: 52458 RVA: 0x002EE19C File Offset: 0x002EC39C [Token(Token = "0x600CCEA")] [Address(RVA = "0x1728730", Offset = "0x1727530", VA = "0x181728730")] 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: 0x0600CCEB RID: 52459 RVA: 0x002EE1D0 File Offset: 0x002EC3D0 [Token(Token = "0x600CCEB")] [Address(RVA = "0x1728800", Offset = "0x1727600", VA = "0x181728800")] 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: 0x0600CCEC RID: 52460 RVA: 0x002EE2D0 File Offset: 0x002EC4D0 [Token(Token = "0x600CCEC")] [Address(RVA = "0x1728A80", Offset = "0x1727880", VA = "0x181728A80")] public HeartbeatManager() { List list = new List(); this.Heartbeats = list; DateTime minValue = DateTime.MinValue; this.LastUpdate = minValue; base..ctor(); } // Token: 0x0400826A RID: 33386 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400826A")] private List Heartbeats; // Token: 0x0400826B RID: 33387 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400826B")] private IHeartbeat[] UpdateArray; // Token: 0x0400826C RID: 33388 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400826C")] private DateTime LastUpdate; } }