internal void OnSessionDelete(NetworkInterfaceHandler interfaceHandler, Origin origin) { lock (_sessionData) { SdpSession session = new SdpSession(origin, interfaceHandler.NetworkInterface); SessionData sessionData = null; SessionAnnouncement sessionAnnouncement = null; if (_sessionData.TryGetValue(session, out sessionData)) { sessionAnnouncement = sessionData.Session; } if (sessionData != null) { if (origin.IsUpdateOrEqual(sessionAnnouncement.SessionDescription.Origin)) { sessionData.Timer.Dispose(); _sessionData.Remove(session); _announcements.Remove(sessionData.Id); SynchronizationContextPost(o => { lock (Sessions) { Sessions.Remove(sessionData.Session); } }); } } } }
internal void OnSessionDelete(NetworkInterfaceHandler interfaceHandler, Origin origin) { lock (_sessionData) { SdpSession session = new SdpSession(origin, interfaceHandler.NetworkInterface); SessionData sessionData = null; SessionAnnouncement sessionAnnouncement = null; if (_sessionData.TryGetValue(session, out sessionData)) { sessionAnnouncement = sessionData.Session; } if (sessionData != null) { if (origin.IsUpdateOrEqual(sessionAnnouncement.SessionDescription.Origin)) { sessionData.Timer.Dispose(); _sessionData.Remove(session); _announcements.Remove(sessionData.Id); SynchronizationContextPost(o => { lock (Sessions) { Sessions.Remove(sessionData.Session); } }); } } } }