Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }