示例#1
0
        public RequestJobDurationData GetDuration(RequestState state)
        {
            RequestJobDurationData requestJobDurationData = null;
            RequestJobDurationData requestJobDurationData2;

            if (this.durations.TryGetValue(state, out requestJobDurationData2))
            {
                requestJobDurationData = requestJobDurationData2;
            }
            if (state == this.curState)
            {
                DateTime utcNow   = TimeProvider.UtcNow;
                TimeSpan duration = utcNow.Subtract(this.stateChangeTimestamp);
                if (requestJobDurationData == null)
                {
                    requestJobDurationData = new RequestJobDurationData(state);
                    requestJobDurationData.AddTime(duration);
                    this.durations[this.curState] = requestJobDurationData;
                }
                else
                {
                    requestJobDurationData.AddTime(duration);
                }
                this.stateChangeTimestamp = utcNow;
            }
            RequestJobStateNode state2 = RequestJobStateNode.GetState(state);

            if (state2 != null)
            {
                foreach (RequestJobStateNode requestJobStateNode in state2.Children)
                {
                    RequestJobDurationData duration2 = this.GetDuration(requestJobStateNode.MRState);
                    if (duration2 != null)
                    {
                        requestJobDurationData += duration2;
                    }
                }
            }
            return(requestJobDurationData);
        }