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);
}
});
}
}
}
}