LRESULT CRTCSampleMainInterface::onRemoteUserOffLineNotifyMT()

in AliRTC2.5/Windows/MFC Demo/RtcSample/RTCSampleMainInterface.cpp [633:722]


LRESULT CRTCSampleMainInterface::onRemoteUserOffLineNotifyMT(WPARAM wParam, LPARAM lParam)
{
	userOfflineParam *RemoteUserOffLine = (userOfflineParam *)lParam;

	if (0 == m_mapRemoteInfo.count(RemoteUserOffLine->uid.c_str())) return -1;

	WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "1远端离会[uid:%s]", RemoteUserOffLine->uid.c_str());
	m_mapRemoteInfo.erase(RemoteUserOffLine->uid.c_str());

	for (vector<String>::iterator DelVecIter = m_vecRemoteInfoList.begin(); DelVecIter != m_vecRemoteInfoList.end(); DelVecIter++)
	{
		if (*DelVecIter == RemoteUserOffLine->uid)
		{
			m_vecRemoteInfoList.erase(DelVecIter);
			break;
		}
	}
	WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "2.1远端离会[uid:%s][在线人数:%d]", RemoteUserOffLine->uid.c_str(), m_mapRemoteInfo.size());
	if (m_vecRemoteInfoList.size() > 5)
	{
		if (m_iRightSideIndex == m_vecRemoteInfoList.size())
		{
			m_iLeftSideIndex--;
			m_iRightSideIndex--;
			RemoveRemoteUser(RemoteUserOffLine->uid, MoveForward);

			if (m_iLeftSideIndex < 0)
				m_iLeftSideIndex = 0;
				
			ShowSubscribe(m_vecRemoteInfoList[m_iLeftSideIndex], 0, AliEngineVideoTrackCamera);
			WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "3.1远端离会  m_iRightSideIndex == m_vecRemoteInfoList.size()[%d == %d]", m_iRightSideIndex, m_vecRemoteInfoList.size());
		}
		else
		{
			RemoveRemoteUser(RemoteUserOffLine->uid, BackwardShift);

			if (m_iRightSideIndex >= m_vecRemoteInfoList.size())
				m_iRightSideIndex = m_vecRemoteInfoList.size() - 1;

			ShowSubscribe(m_vecRemoteInfoList[m_iRightSideIndex], 4, AliEngineVideoTrackCamera);
			WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "3.2远端离会[%d - %d]", m_iRightSideIndex, m_vecRemoteInfoList.size());

		}
	}
	else if (m_vecRemoteInfoList.size() == 5)
	{
		RemoveRemoteUser(RemoteUserOffLine->uid, BackwardShift);
		ShowSubscribe(m_vecRemoteInfoList[4], 4, AliEngineVideoTrackCamera);

		GetDlgItem(IDC_BUTTON_LEFT)->EnableWindow(false);
		GetDlgItem(IDC_BUTTON_RIGHT)->EnableWindow(false);
		WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "4远端离会 m_vecRemoteInfoList.size() == 5[%d]", m_vecRemoteInfoList.size());
	}
	else
	{
		RemoveRemoteUser(RemoteUserOffLine->uid, BackwardShift);
		SetTimer(TIMER_RETRIEVAL_CHANNEL, 500, NULL);
		GetDlgItem(IDC_BUTTON_LEFT)->EnableWindow(false);
		GetDlgItem(IDC_BUTTON_RIGHT)->EnableWindow(false);

		WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "5远端离会 m_vecRemoteInfoList.size() < 5[%d]", m_vecRemoteInfoList.size());

		WRILOG(LOGTYPE_DEBUG, "DEBUG1.LOG", "", "【%s】-【%s】-【%s】-【%s】-【%s】", m_vecThrowingScreenInfo[0].s_strRemoteUserUid.c_str(),
			m_vecThrowingScreenInfo[1].s_strRemoteUserUid.c_str(),
			m_vecThrowingScreenInfo[2].s_strRemoteUserUid.c_str(),
			m_vecThrowingScreenInfo[3].s_strRemoteUserUid.c_str(),
			m_vecThrowingScreenInfo[4].s_strRemoteUserUid.c_str());
	}

	ShowNumOfChannels();
	WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "6远端离会[uid:%s]ShowNumOfChannels后", RemoteUserOffLine->uid.c_str());
	WRILOG(LOGTYPE_DEBUG, RTC_DEBUG_LOG, "onRemoteUserOffLineNotify", "远端离会[uid:%s][在线人数:%d]", RemoteUserOffLine->uid.c_str(), m_mapRemoteInfo.size());

	CString str, strUser;
	for (int i = 0; i < (int)m_vecRemoteInfoList.size(); i++)
	{
		if (strUser != m_vecRemoteInfoList[i].c_str())
		{
			strUser = m_vecRemoteInfoList[i].c_str();
			str.Format("%s\r\n%s", str, strUser);
		}
	}

	WRILOG(LOGTYPE_DEBUG, "DEBUG2.LOG", "本次人数", "%s", str);

	delete RemoteUserOffLine;
	RemoteUserOffLine = NULL;
	WRILOG(LOGTYPE_DEBUG, "DEBUG4.LOG", "onRemoteUserOffLineNotifyMT", "7远端离会");
	return 0;
}