/// <summary>
/// Removes a participant and does all the necessary cleanup of streams and associations
/// </summary>
/// <param name="participant"></param>
private void RemoveParticipant(RtpParticipant participant)
{
lock(participants)
{
if(participants.ContainsKey(participant.CName))
{
foreach(uint ssrc in participant.SSRCs)
{
if(streamsAndIPs[ssrc].stream != null)
{
RemoveSSRC(ssrc);
}
participant.RemoveSSRC(ssrc);
ssrcToParticipant.Remove(ssrc);
}
participants.Remove(participant.CName);
ssrcToParticipant.Remove(participant.SSRC);
RaiseParticipantRemovedEvent(participant);
}
}
}