void CImUserManager::GetUserConnCnt(list<user_conn_t>* user_conn_list, uint32_t& total_conn_cnt) { total_conn_cnt = 0; CImUser* pImUser = NULL; for (ImUserMap_t::iterator it = m_im_user_map.begin(); it != m_im_user_map.end(); it++) { pImUser = (CImUser*)it->second; if (pImUser->IsValidate()) { user_conn_t user_conn_cnt = pImUser->GetUserConn(); user_conn_list->push_back(user_conn_cnt); total_conn_cnt += user_conn_cnt.conn_cnt; } } }
void CImUserManager::GetOnlineUserInfo(list<user_stat_t>* online_user_info) { user_stat_t status; CImUser* pImUser = NULL; for (ImUserMap_t::iterator it = m_im_user_map.begin(); it != m_im_user_map.end(); it++) { pImUser = (CImUser*)it->second; if (pImUser->IsValidate()) { map<uint32_t, CMsgConn*>& ConnMap = pImUser->GetMsgConnMap(); for (map<uint32_t, CMsgConn*>::iterator it = ConnMap.begin(); it != ConnMap.end(); it++) { CMsgConn* pConn = it->second; if (pConn->IsOpen()) { status.user_id = pImUser->GetUserId(); status.client_type = pConn->GetClientType(); status.status = pConn->GetOnlineStatus(); online_user_info->push_back(status); } } } } }
void CImUserManager::BroadcastPdu(CImPdu* pdu, uint32_t client_type_flag) { CImUser* pImUser = NULL; for (ImUserMap_t::iterator it = m_im_user_map.begin(); it != m_im_user_map.end(); it++) { pImUser = (CImUser*)it->second; if (pImUser->IsValidate()) { switch (client_type_flag) { case CLIENT_TYPE_FLAG_PC: pImUser->BroadcastPduWithOutMobile(pdu); break; case CLIENT_TYPE_FLAG_MOBILE: pImUser->BroadcastPduToMobile(pdu); break; case CLIENT_TYPE_FLAG_BOTH: pImUser->BroadcastPdu(pdu); break; default: break; } } } }