Beispiel #1
0
        private Dictionary <string, List <CustomTiming> > LoadCustomTimings(Guid timingId)
        {
            var customTimingPocos = CustomTimings
                                    .Find(Query <CustomTimingPoco> .EQ(poco => poco.TimingId, timingId))
                                    .ToList();

            return(customTimingPocos
                   .GroupBy(poco => poco.Key)
                   .ToDictionary(grp => grp.Key,
                                 grp => grp.OrderBy(poco => poco.StartMilliseconds)
                                 .Select(CustomTimingPocoToCustomTiming).ToList()));
        }
Beispiel #2
0
        /// <summary>
        /// Returns the <see cref="CustomTiming"/> list keyed to the <paramref name="category"/>, creating any collections when null.
        /// </summary>
        /// <param name="category">The kind of custom timings, e.g. "sql", "redis", "memcache"</param>
        private List <CustomTiming> GetCustomTimingList(string category)
        {
            if (CustomTimings == null)
            {
                CustomTimings = new Dictionary <string, List <CustomTiming> >();
            }

            List <CustomTiming> result;

            lock (CustomTimings)
            {
                if (!CustomTimings.TryGetValue(category, out result))
                {
                    result = new List <CustomTiming>();
                    CustomTimings[category] = result;
                }
            }
            return(result);
        }
Beispiel #3
0
        private void SaveCustomTimings(Timing timing, KeyValuePair <string, List <CustomTiming> > customTimingsKV)
        {
            var key   = customTimingsKV.Key;
            var value = customTimingsKV.Value;

            foreach (var customTiming in value)
            {
                var customTimingPoco = new CustomTimingPoco
                {
                    Id                             = customTiming.Id,
                    Key                            = key,
                    TimingId                       = timing.Id,
                    CommandString                  = customTiming.CommandString,
                    ExecuteType                    = customTiming.ExecuteType,
                    StackTraceSnippet              = customTiming.StackTraceSnippet,
                    StartMilliseconds              = customTiming.StartMilliseconds,
                    DurationMilliseconds           = customTiming.DurationMilliseconds,
                    FirstFetchDurationMilliseconds = customTiming.FirstFetchDurationMilliseconds
                };

                CustomTimings.Insert(customTimingPoco);
            }
        }