/// <summary> /// Removes the specified session data. /// </summary> /// <param name="sessionData">The session data.</param> public static void Remove(SessionData sessionData) { if(sessionData == null) return; var item = tree.Where(x => x.SessionData == sessionData).FirstOrDefault(); if(item != null) { foreach (var child in item.AllChildren) Remove(child.SessionData); if (sessionData.Parent == null) { foreach (var child in item.AllChildren) tree.Remove(child); tree.Remove(item); } else { item.SessionData = null; if (item.ProtocolEvents.Count == 0) tree.Remove(item); } } }
/// <summary> /// Gets the SessionEvents for sessionData. /// </summary> /// <param name="sessionData">The session data.</param> /// <returns></returns> public static SessionEvents GetEvents(SessionData sessionData) { SessionEvents result = null; if (sessionData != null) { result = tree.Where(x => x.SessionData == sessionData).FirstOrDefault(); if (result == null) { result = new SessionEvents { SessionData = sessionData, StartedOn = sessionData.StartedOn, SessionId = sessionData.SessionId }; tree.Add(result); if (sessionData.Parent != null) result.Parent = GetEvents(sessionData.Parent); } } return result; }
/// <summary> /// Registers the session. /// </summary> /// <param name="session">The session.</param> /// <returns>New SessionData object</returns> internal SessionData RegisterSession(Session session) { if (collectorDisabled) return null; SessionData result; if (!sessionRegistry.ContainsKey(session)) { result = new SessionData(session, this); sessionRegistry.Add(session, result); subscribeToSessionEvents(session); if (session is NestedUnitOfWork) result.Parent = RegisterSession(((NestedUnitOfWork)session).Parent); } else result = sessionRegistry[session]; return result; }
public TrackedObjectBag(SessionData sessionData) { SessionData = sessionData; }