Пример #1
0
        // 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);
            }
        }