public void IncrementCachedEventCounter(Guid eventReferenceName) { lock (m_eventTrackCacheLock) { Debug.Assert(m_eventTrackCache.ContainsKey(eventReferenceName), string.Format("Event \"{0}\" is not being tracked.", eventReferenceName)); EventTrackingCache cache = m_eventTrackCache[eventReferenceName]; if ((cache.Mode & EventTrackingMode.Counter) != EventTrackingMode.Counter || !cache.Counter.HasValue) { return; } cache.Counter++; } }
public void FinishTrackingEvent(Guid eventReferenceName) { lock (m_eventTrackCacheLock) { if (!m_eventTrackCache.ContainsKey(eventReferenceName)) { return; } using (RuntimeEntityModel context = RuntimeEntityModel.CreateInstance()) { RTSessionRun rtSessionRun = context.RTSessionRunSet.Where (s => s.Id == m_session.InternalSessionRunId).First <RTSessionRun>(); Debug.Assert(rtSessionRun != null, string.Format("Cannot find session run with Id ({0}) to track event", m_session.InternalSessionRunId)); EventTrackingCache cache = m_eventTrackCache[eventReferenceName]; RTGeneralPerformanceData perfData = (from p in context.RTGeneralPerformanceDataSet where p.RuntimeSessionGroupRun.Id == rtSessionRun.SessionGroupRun.Id && p.SessionUniqueId.Equals(rtSessionRun.Config.SessionUniqueId) && p.SourceUniqueId.Equals(m_sourceId) && p.CriterionReferenceName.Equals(eventReferenceName) select p).First <RTGeneralPerformanceData>(); if (null == perfData) { perfData = RTGeneralPerformanceData.CreateRTGeneralPerformanceData( 0, rtSessionRun.Config.SessionUniqueId, m_sourceId, eventReferenceName, cache.FriendlyName); perfData.RuntimeSessionGroupRun = rtSessionRun.SessionGroupRun; } perfData.PerfCounter = cache.Counter; perfData.PerfStartTime = cache.StartTime; perfData.PerfFinishTime = DateTime.Now; context.TrySaveChanges(); } m_eventTrackCache.Remove(eventReferenceName); } }