/// <summary> /// The callback which is called every time new event appears. /// </summary> /// <param name="traceEvent">The trace event.</param> public void AddEtwEventToAggregatedCallTree(TraceEvent traceEvent) { if (suspended) { return; } if (!TraceEventToCollect(traceEvent)) { return; } int sessionId = GetSessionId(traceEvent); SingleSessionEventAggregator sessionAggregator; if (!sessionAggregators.TryGetValue(sessionId, out sessionAggregator)) { sessionAggregator = new SingleSessionEventAggregator(sessionId, threshold); sessionAggregator.Initialize(); sessionAggregators[sessionId] = sessionAggregator; } sessionAggregator.AddEtwEventToAggregatedCallTree(traceEvent); }
/// <summary> /// The callback which is called every time new event appears. /// </summary> /// <param name="traceEvent">The trace event.</param> public void AddEtwEventToAggregatedCallTree(TraceEvent traceEvent) { if (this.suspended) { return; } int statementIndex; EventType eventType; EventSubType eventSubType; string statement; if (!GetStatementIndexAndEventType(traceEvent, out statementIndex, out statement, out eventType, out eventSubType)) { return; } // We can check sessions id only here after we filtered out non Nav events. int sessionId = GetSessionId(traceEvent); SingleSessionEventAggregator sessionAggregator; if (!this.sessionAggregators.TryGetValue(sessionId, out sessionAggregator)) { sessionAggregator = new SingleSessionEventAggregator(sessionId, this.threshold); sessionAggregator.Initialize(); this.sessionAggregators[sessionId] = sessionAggregator; } sessionAggregator.AddEtwEventToAggregatedCallTree(traceEvent, sessionId, statementIndex, statement, eventType, eventSubType); }