// Token: 0x0600723C RID: 29244 RVA: 0x0017A49C File Offset: 0x0017869C public static void Update(bool isOneHour) { if (!ThrottlingPerfCounterWrapper.PerfCountersInitialized) { return; } int[] array = null; int averageUsage = 0; int[] array2 = null; int averageUsage2 = 0; PercentileUsage[] array3 = null; if (BudgetUsageTracker.budgetUsage.Count > 0) { List <BudgetKey> list = null; lock (BudgetUsageTracker.staticLock) { if (BudgetUsageTracker.budgetUsage.Count > 0) { array3 = new PercentileUsage[BudgetUsageTracker.budgetUsage.Count]; int num = 0; foreach (KeyValuePair <BudgetKey, PercentileUsage> keyValuePair in BudgetUsageTracker.budgetUsage) { array3[num++] = new PercentileUsage(keyValuePair.Value); if (keyValuePair.Value.FiveMinuteUsage == 0 && keyValuePair.Value.OneHourUsage == 0 && TimeProvider.UtcNow - keyValuePair.Value.CreationTime > BudgetUsageTracker.PeriodicLoggingInterval) { if (list == null) { list = new List <BudgetKey>(); } list.Add(keyValuePair.Key); } keyValuePair.Value.Clear(isOneHour); } if (list != null) { foreach (BudgetKey key in list) { PercentileUsage percentileUsage; if (BudgetUsageTracker.budgetUsage.TryGetValue(key, out percentileUsage)) { percentileUsage.Expired = true; BudgetUsageTracker.budgetUsage.Remove(key); } } } } } } if (array3 != null) { BudgetUsageTracker.GetPercentileUsage(array3, false, out array, out averageUsage); ThrottlingPerfCounterWrapper.SetFiveMinuteBudgetUsage(array[0], array[1], array[2], averageUsage); if (isOneHour) { BudgetUsageTracker.GetPercentileUsage(array3, true, out array2, out averageUsage2); ThrottlingPerfCounterWrapper.SetOneHourBudgetUsage(array2[0], array2[1], array2[2], averageUsage2); return; } } else { if (isOneHour) { ThrottlingPerfCounterWrapper.SetOneHourBudgetUsage(0, 0, 0, 0); return; } ThrottlingPerfCounterWrapper.SetFiveMinuteBudgetUsage(0, 0, 0, 0); } }