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