コード例 #1
0
        /// <summary>
        /// Ends metrics for a given service. This method also tracks the service status (any exceptions) and the number of items processed.
        /// </summary>
        /// <param name="methodName">Method Name</param>
        /// <param name="exception">Exception (if one occured)</param>
        /// <param name="itemsProcessed">Number of Items Processed</param>
        public void EndServiceCall(string methodName, Exception exception, string callingIPAddress = null)
        {
            DateTime timestamp = DateTime.Now;

            if (string.IsNullOrEmpty(callingIPAddress))
            {
                callingIPAddress = GetCallingIPAddress();
            }

            ServiceMetricStatusEnum status = ServiceMetricStatusEnum.Success;

            if (exception != null)
            {
                if (exception is APIException)
                {
                    status = ServiceMetricStatusEnum.Error;
                }
                else
                {
                    status = ServiceMetricStatusEnum.Exception;
                }
            }

            lock (CurrentWebMethodCallStart)
            {
                TimeSpan processTime = timestamp.Subtract(CurrentWebMethodCallStart[methodName]);
                CurrentServiceMetrics.EndServiceCall(methodName, status, processTime, timestamp, callingIPAddress, GetHostName(callingIPAddress));
            }
        }
コード例 #2
0
 internal void EndServiceCall(string methodName, ServiceMetricStatusEnum status, TimeSpan processTime, DateTime timestamp, string callingIPAddress, string callingHostName)
 {
     // Update Counters
     lock (WebMethodMetricsList)
     {
         WebMethodAggregateData serviceMetricData = WebMethodMetricsList.FirstOrDefault(m => m.WebMethodName.Equals(methodName));
         serviceMetricData.EndServiceCall(status, processTime, timestamp, callingIPAddress, callingHostName);
     }
 }
コード例 #3
0
        internal void EndServiceCall(ServiceMetricStatusEnum status, TimeSpan processTime, DateTime timestamp, string callingIPAddress, string callingHostName)
        {
            // Update Counters
            CompletedRequests++;
            ActiveRequests--;
            TotalProcessingTime += processTime;

            if (MinProcessTime > processTime || MinProcessTime == TimeSpan.Zero)
            {
                MinProcessTime = processTime;
            }

            if (MaxProcessTime < processTime)
            {
                MaxProcessTime = processTime;
            }

            if (FirstProcessTime == TimeSpan.Zero)
            {
                FirstProcessTime = processTime;
            }

            LastProcessTime      = processTime;
            LastProcessDateTime  = timestamp;
            LastCallingIPAddress = callingIPAddress;
            LastCallingHostFQN   = callingHostName;

            if (status == ServiceMetricStatusEnum.Exception)
            {
                TotalFaults = (TotalFaults ?? 0) + 1;
                LastFault   = timestamp;
            }
            else if (status == ServiceMetricStatusEnum.Error)
            {
                TotalErrors = (TotalErrors ?? 0) + 1;
            }
        }