Пример #1
0
void CZegoRoomModel::AddStream(StreamPtr stream)
{
	if (stream == nullptr) { return; }

	std::string strStreamId = stream->GetId();

	if (stream->IsPrimary())
	{
		if (stream->IsPlaying())
		{
			auto iter = std::find_if(m_playingPrimaryStreams.begin(), m_playingPrimaryStreams.end(),
				[&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; });
			if (iter == m_playingPrimaryStreams.end())
				m_playingPrimaryStreams.push_back(stream);
		}
		else
		{
			auto iter = std::find_if(m_pendingPrimaryStreams.begin(), m_pendingPrimaryStreams.end(),
				[&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; });
			if (iter == m_pendingPrimaryStreams.end())
				m_pendingPrimaryStreams.push_back(stream);
		}
	}
	else
	{
		if (stream->IsPlaying())
		{
			auto iter = std::find_if(m_playingStudentStreams.begin(), m_playingStudentStreams.end(),
				[&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; });
			if (iter == m_playingStudentStreams.end())
				m_playingStudentStreams.push_back(stream);
		}
		else
		{
			auto iter = std::find_if(m_pendingStudentStreams.begin(), m_pendingStudentStreams.end(),
				[&strStreamId](const StreamPtr& elem) { return elem->GetId() == strStreamId; });
			if (iter == m_pendingStudentStreams.end())
				m_pendingStudentStreams.push_back(stream);
		}
	}
}