예제 #1
0
 public void ResponseHandler(Models.RequestInstance requestInstance, Task <HttpResponseMessage> task)
 {
     if (task.Result != null)
     {
         Services.RequestPerformance.RecordEnd(requestInstance, task.Result);
     }
 }
        public static void RecordEnd(Models.RequestInstance requestInstance, HttpResponseMessage response)
        {
            if (Enabled && requestInstance != null)
            {
                Performance.AddStat(requestInstance);
            }

            //var headers = task.Result.ToString();
            //var body = task.Result.Content.ReadAsStringAsync().Result;
            //var fullResponse = headers + "\n" + body;
        }
        public void AddStat(Models.RequestInstance requestInstance)
        {
            var endpointStat = _endpointStats.GetOrAdd(requestInstance.Endpoint, s => new Models.EndpointStat()
            {
                Name = requestInstance.Endpoint
            });
            var end      = DateTime.UtcNow.Ticks;
            var duration = (end - requestInstance.Start) / TimeSpan.TicksPerMillisecond;
            var stat     = new Models.Stat()
            {
                Name = requestInstance.Endpoint, Duration = duration
            };

            endpointStat.Record(stat);

            SlowestStats.Add(stat);
            SlowestStats = SlowestStats.OrderByDescending(s => s.Duration).Take(_config.SlowRequestCount).ToList();
        }