Example #1
0
        internal void EndInternalTracking(string groupName, string funcName)
        {
            string key = LatencyTracker.LatencyInfo.GetKey(groupName, funcName);

            if (!this.internalTrackingDic.ContainsKey(key))
            {
                return;
            }
            LatencyTracker.LatencyInfo latencyInfo = this.internalTrackingDic[key];
            this.internalTrackingDic.Remove(key);
            LatencyTracker.LatencyInfo latencyInfo2 = this.GetCurrentLatencyInfo() - latencyInfo;
            long elapsedTime = latencyInfo2.ElapsedTime;

            if (this.latencyBreakDowns.ContainsKey(groupName))
            {
                long   value = 2L;
                string key2  = groupName + ".C";
                if (this.latencyBreakDowns.ContainsKey(key2))
                {
                    value = this.latencyBreakDowns[key2] + 1L;
                }
                this.latencyBreakDowns[key2] = value;
            }
            long   num = elapsedTime;
            string strA;

            if (this.groupTrackingDic.TryGetValue(groupName, out strA) && string.Compare(strA, funcName, true) == 0)
            {
                if (this.latencyBreakDowns.ContainsKey(groupName))
                {
                    num = this.latencyBreakDowns[groupName] + num;
                }
                this.latencyBreakDowns[groupName] = num;
                this.groupTrackingDic.Remove(groupName);
            }
            string funcNameForDetailedLatencyLogging = this.GetFuncNameForDetailedLatencyLogging(funcName, latencyInfo);

            if (latencyInfo.LogDetailsAlways || elapsedTime >= (long)LoggerSettings.ThresholdToLogActivityLatency)
            {
                if (!string.Equals(funcNameForDetailedLatencyLogging, groupName))
                {
                    this.latencyBreakDowns[funcNameForDetailedLatencyLogging] = elapsedTime;
                }
                if (latencyInfo2.ADLatency.Count > 0L)
                {
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".ADC", latencyInfo2.ADLatency.Count);
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".AD", (long)latencyInfo2.ADLatency.TotalMilliseconds);
                }
                if (latencyInfo2.RpcLatency.Count > 0L)
                {
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".RpcC", latencyInfo2.RpcLatency.Count);
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".Rpc", (long)latencyInfo2.RpcLatency.TotalMilliseconds);
                }
                if (latencyInfo2.ADObjToExchObjLatency.Count > 0L)
                {
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".ATEC", latencyInfo2.ADObjToExchObjLatency.Count);
                    this.latencyBreakDowns.Add(funcNameForDetailedLatencyLogging + ".ATE", (long)latencyInfo2.ADObjToExchObjLatency.TotalMilliseconds);
                }
            }
        }
Example #2
0
        private string GetFuncNameForDetailedLatencyLogging(string funcName, LatencyTracker.LatencyInfo latencyInfoAtStart)
        {
            string text = funcName;

            if (latencyInfoAtStart.GroupName != null && !string.Equals(funcName, latencyInfoAtStart.GroupName))
            {
                text = latencyInfoAtStart.GroupName + "." + text;
            }
            int num;

            if (this.funcNameTrackingDic.TryGetValue(text, out num))
            {
                num++;
            }
            else
            {
                num = 1;
            }
            this.funcNameTrackingDic[text] = num;
            if (num > 1)
            {
                text = text + "$" + num;
            }
            if (!string.Equals(text, funcName) && this.latencyBreakDowns.ContainsKey(text))
            {
                text = Guid.NewGuid().ToString();
            }
            return(text);
        }
Example #3
0
        internal bool StartInternalTracking(string groupName, string funcName, bool logDetailsAlways)
        {
            LatencyTracker.LatencyInfo currentLatencyInfo = this.GetCurrentLatencyInfo();
            currentLatencyInfo.LogDetailsAlways = logDetailsAlways;
            currentLatencyInfo.FuncName         = funcName;
            currentLatencyInfo.GroupName        = groupName;
            string key = LatencyTracker.LatencyInfo.GetKey(groupName, funcName);

            if (this.internalTrackingDic.ContainsKey(key))
            {
                return(false);
            }
            if (!this.groupTrackingDic.ContainsKey(groupName))
            {
                this.groupTrackingDic.Add(groupName, funcName);
            }
            this.internalTrackingDic.Add(key, currentLatencyInfo);
            return(true);
        }