コード例 #1
0
/************************
* DeleteParticipant
* 	Borra un participante
*************************/
int MultiConf::DeleteParticipant(int id)
{
	Log(">DeleteParticipant [%d]\n",id);

	//Stop recording participant just in case
	StopRecordingParticipant(id);

	//Block
	participantsLock.WaitUnusedAndLock();
	
	//El iterator
	Participants::iterator it = participants.find(id);

	//Si no esta
	if (it == participants.end())
	{
		//Unlock
		participantsLock.Unlock();
		//Exit
		return Error("Participant not found\n");
	}

	//LO obtenemos
	Participant *part = it->second;
	part->SetGroupVideoStream(NULL);


	Log("-DeleteParticipant ending media [%d]\n",id);

	//Y lo quitamos del mapa
	participants.erase(it);

	//Unlock
	participantsLock.Unlock();

	//Destroy participatn
	DestroyParticipant(id,part);
	
//Terminamos el audio y el video
	if(m_CurrentBroadCaster == id && participants.size())
	{
		Log("BroadCaster exist use the first coming user\n");
		participants.begin()->second->SetGroupVideoStream(&m_GroupVideo);
		m_CurrentBroadCaster = participants.begin()->second->GetPartId();
		participants.begin()->second->SendVideoFPU();
	} else if(m_CurrentBroadCaster == id && participants.size() == 0) {
		Log("BroadCaster and no user left\n");
		m_CurrentBroadCaster = 0;
	}

	Log("<DeleteParticipant [%d]\n",id);

	return 1;
}
コード例 #2
0
ファイル: multiconf.cpp プロジェクト: tidehc/media-server-1
/************************
* DeleteParticipant
* 	Borra un participante
*************************/
int MultiConf::DeleteParticipant(int id)
{
	Log(">DeleteParticipant [%d]\n",id);

	//Stop recording participant just in case
	StopRecordingParticipant(id);

	//Block
	participantsLock.WaitUnusedAndLock();

	//El iterator
	Participants::iterator it = participants.find(id);

	//Si no esta
	if (it == participants.end())
	{
		//Unlock
		participantsLock.Unlock();
		//Exit
		return Error("Participant not found\n");
	}

	//LO obtenemos
	Participant *part = it->second;

	//Y lo quitamos del mapa
	participants.erase(it);

	//Unlock
	participantsLock.Unlock();

	//Destroy participatn
	DestroyParticipant(id,part);

	Log("<DeleteParticipant [%d]\n",id);

	return 1;
}