internal void SetState(RequestState value) { if (this.curState == value) { return; } DateTime utcNow = TimeProvider.UtcNow; TimeSpan duration = utcNow.Subtract(this.stateChangeTimestamp); this.RefreshDurations(); if (RequestJobTimeTracker.SupportDurationTracking(this.curState)) { RequestJobDurationData requestJobDurationData; if (!this.durations.TryGetValue(this.curState, out requestJobDurationData)) { requestJobDurationData = new RequestJobDurationData(this.curState); } requestJobDurationData.AddTime(duration); this.durations[this.curState] = requestJobDurationData; } this.stateChangeTimestamp = utcNow; this.curState = value; if (RequestJobTimeTracker.SupportDurationTracking(this.curState)) { this.UpdateActiveCounts(this.curState, 1L); this.IncRateCounts(this.curState); } }
private static IEnumerable <IObjectLogPropertyDefinition <RequestJobLogData> > GetTimeTrackerDurations() { List <IObjectLogPropertyDefinition <RequestJobLogData> > list = new List <IObjectLogPropertyDefinition <RequestJobLogData> >(); foreach (object obj in Enum.GetValues(typeof(RequestState))) { RequestState requestState = (RequestState)obj; if (RequestJobTimeTracker.SupportDurationTracking(requestState)) { list.Add(new RequestJobLog.RequestJobLogSchema.TimeTrackerDurationProperty(requestState)); } } return(list); }