예제 #1
0
        private static void CountStats(object o)
        {
            if (DateTime.Now >= _timeLine)
            {
                _timeLine = _timeLine.AddSeconds(_config.CoreDelay / 5.0);

                if (DateTime.Now >= _timeLine)
                {
                    if (++_failCount > 5)
                    {
                        _config.CoreDelay *= 2;
                        _failCount         = 0;
                    }
                }
                else
                {
                    _failCount = 0;
                }

                var slot = _requestSlots[_currentSlotIndex];
                if (_currentSlotIndex >= _requestSlots.Length - 1)
                {
                    _currentSlotIndex = 0;
                }
                else
                {
                    _currentSlotIndex++;
                }
                _currentSlot = _requestSlots[_currentSlotIndex];

                slot.Reset();
                var stats = new Dictionary <Guid, DomainStatistics>();
                _requestSlots.Each(i => i.Count(stats));

                foreach (var statItem in stats.Values)
                {
                    var selector  = (IPageSelector)statItem;
                    var statCount = new DomainStatisticsData(statItem);
                    if (selector.SelectorType == (int)PageSelectorType.DomainPattern)
                    {
                        _statisticsModule.SetDomainStatistics(new DomainSelector(DomainSelector.TotalDomain, selector.Id), statCount);
                    }
                    _statisticsModule.SetDomainStatistics(selector, statCount);
                }
            }
        }
 private static void DomainStatisticsHandler(object sender, EventArgs <DomainStatistics> e)
 {
     try
     {
         var data = e.Data;
         //ServiceLocator.LoggerService.Info(string.Format("Id:{0}, Count:{1}, Date: {2}",data.Id,data.Count, DateTime.Now.TimeOfDay));
         _domainStatistics.SetDomainStatistics(e.Data, new DomainStatisticsData(e.Data));
     }
     catch (Exception ex)
     {
         ex.ToString();
     }
 }