Пример #1
0
        internal static void AddResourceData(
            ProtocolDiagnosticResourceEvent pdEvent,
            IReadOnlyDictionary <string, Data> allData,
            ConcurrentDictionary <string, ConcurrentDictionary <string, string> > resourceStringTable)
        {
            if (!allData.TryGetValue(pdEvent.Source, out Data data))
            {
                return;
            }

            var resourceMethodNameTable = resourceStringTable.GetOrAdd(pdEvent.ResourceType, t => new ConcurrentDictionary <string, string>());
            var resourceTypeAndMethod   = resourceMethodNameTable.GetOrAdd(pdEvent.Method, m => pdEvent.ResourceType + "." + m);

            lock (data._lock)
            {
                if (data.Resources.TryGetValue(resourceTypeAndMethod, out var t))
                {
                    data.Resources[resourceTypeAndMethod] = (t.count + 1, t.duration + pdEvent.Duration);
                }
                else
                {
                    data.Resources[resourceTypeAndMethod] = (1, pdEvent.Duration);
                }
            }
        }
Пример #2
0
 private void ProtocolDiagnostics_ResourceEvent(ProtocolDiagnosticResourceEvent pdEvent)
 {
     AddResourceData(pdEvent, _data, _resourceStringTable);
 }
Пример #3
0
 internal static void RaiseEvent(ProtocolDiagnosticResourceEvent pdrEvent)
 {
     ResourceEvent?.Invoke(pdrEvent);
 }