public Usage() { this.syncObject = new object(); this.concurrentRequestQuotaViolationsPerSec = new PerSecCounter(); PerSecCounter perSecCounter = this.concurrentRequestQuotaViolationsPerSec; perSecCounter.PreResetEventHandler += (object src, PerTimeslotCounter.PreResetEventArgs args) => { DateTime time = args.Time; TraceHelper.Current.ConcurrentRequestQuotaViolationCount(args.Counter, time.ToString(CultureInfo.CurrentCulture)); } ; this.requests = new PerTimeslotCounter(30); this.requestPerSecQuotaViolations = new PerSecCounter(); PerSecCounter perSecCounter1 = this.requestPerSecQuotaViolations; perSecCounter1.PreResetEventHandler += (object src, PerTimeslotCounter.PreResetEventArgs args) => { DateTime time = args.Time; TraceHelper.Current.RequestPerSecondQuotaViolationCount(args.Counter, time.ToString(CultureInfo.CurrentCulture)); } ; }
public virtual void Increment(int newTimeSlot) { DateTime now = DateTimeHelper.Now; if (newTimeSlot != this.timeSlotWindow.TimeSlot.Value || !this.timeSlotWindow.InsideWindow(now)) { if (this.PreResetEventHandler != null && this.@value != 0) { this.PreResetEventHandler(this, new PerTimeslotCounter.PreResetEventArgs(this.timeSlotWindow.BaseTime, this.@value, this.timeSlotWindow.TimeSlot.Value, newTimeSlot)); } this.@value = 1; this.timeSlotWindow.Set(now, newTimeSlot); return; } else { PerTimeslotCounter perTimeslotCounter = this; perTimeslotCounter.@value = perTimeslotCounter.@value + 1; return; } }