void LoginModule_Impl::notifyLoginDone() { imcore::IMLibCoreStartOperationWithLambda( [] { //鑾峰彇閮ㄩ棬淇℃伅 UInt32 lastTime = module::getSysConfigModule()->getDepartmentInfoLatestUpdateTime(); IM::Buddy::IMDepartmentReq imDepartmentReq; imDepartmentReq.set_user_id(module::getSysConfigModule()->userId()); imDepartmentReq.set_latest_update_time(lastTime); module::getTcpClientModule()->sendPacket(IM::BaseDefine::ServiceID::SID_BUDDY_LIST , IM::BaseDefine::BuddyListCmdID::CID_BUDDY_LIST_DEPARTMENT_REQUEST , &imDepartmentReq); LOG__(APP, _T("IMDepartmentReq,latest update time :%d"), lastTime); //澧為噺鑾峰彇鎵�鏈変汉淇℃伅 lastTime = module::getSysConfigModule()->getUserInfoLatestUpdateTime();//鑾峰彇鏈�鍚庝竴娆℃洿鏂颁汉鍛樹俊鎭殑鏃堕棿 IM::Buddy::IMAllUserReq imAllUserReq; imAllUserReq.set_user_id(module::getSysConfigModule()->userId()); imAllUserReq.set_latest_update_time(lastTime); module::getTcpClientModule()->sendPacket(IM::BaseDefine::ServiceID::SID_BUDDY_LIST , IM::BaseDefine::BuddyListCmdID::CID_BUDDY_LIST_ALL_USER_REQUEST ,&imAllUserReq); LOG__(APP, _T("IMAllUserReq,latest update time :%d"), lastTime); //澧為噺鑾峰彇缇ゅ垪琛� IM::Group::IMNormalGroupListReq imNormalGroupListReq; imNormalGroupListReq.set_user_id(module::getSysConfigModule()->userId()); module::getTcpClientModule()->sendPacket(IM::BaseDefine::ServiceID::SID_GROUP , IM::BaseDefine::GroupCmdID::CID_GROUP_NORMAL_LIST_REQUEST , &imNormalGroupListReq); LOG__(APP, _T("IMNormalGroupListReq")); }); }
void CGroupChat::HandleClientGroupNormalRequest(CImPdu* pPdu, CMsgConn* pFromConn) { IM::Group::IMNormalGroupListReq msg; CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength())); uint32_t user_id = pFromConn->GetUserId(); log("HandleClientGroupNormalRequest, user_id=%u. ", user_id); CDbAttachData attach_data(ATTACH_TYPE_HANDLE, pFromConn->GetHandle(), 0); CDBServConn* pDBConn = get_db_serv_conn(); if (pDBConn) { msg.set_user_id(user_id); msg.set_attach_data((uchar_t*)attach_data.GetBuffer(), attach_data.GetLength()); pPdu->SetPBMsg(&msg); pDBConn->SendPdu(pPdu); } else { log("no db connection. "); IM::Group::IMNormalGroupListRsp msg2; msg.set_user_id(user_id); CImPdu pdu; pdu.SetPBMsg(&msg2); pdu.SetServiceId(SID_GROUP); pdu.SetCommandId(CID_GROUP_NORMAL_LIST_RESPONSE); pdu.SetSeqNum(pPdu->GetSeqNum()); pFromConn->SendPdu(&pdu); } }
/** * 获取正式群列表 * * @param pPdu 收到的packet包指针 * @param conn_uuid 该包过来的socket 描述符 */ void getNormalGroupList(CImPdu* pPdu, uint32_t conn_uuid) { IM::Group::IMNormalGroupListReq msg; IM::Group::IMNormalGroupListRsp msgResp; if(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength())) { CImPdu* pPduRes = new CImPdu; uint32_t nUserId = msg.user_id(); list<IM::BaseDefine::GroupVersionInfo> lsGroup; CGroupModel::getInstance()->getUserGroup(nUserId, lsGroup, IM::BaseDefine::GROUP_TYPE_NORMAL); msgResp.set_user_id(nUserId); for(auto it=lsGroup.begin(); it!=lsGroup.end(); ++it) { IM::BaseDefine::GroupVersionInfo* pGroupVersion = msgResp.add_group_version_list(); pGroupVersion->set_group_id(it->group_id()); pGroupVersion->set_version(it->version()); } log("getNormalGroupList. userId=%u, count=%d", nUserId, msgResp.group_version_list_size()); msgResp.set_attach_data(msg.attach_data()); pPduRes->SetPBMsg(&msgResp); pPduRes->SetSeqNum(pPdu->GetSeqNum()); pPduRes->SetServiceId(IM::BaseDefine::SID_GROUP); pPduRes->SetCommandId(IM::BaseDefine::CID_GROUP_NORMAL_LIST_RESPONSE); CProxyConn::AddResponsePdu(conn_uuid, pPduRes); } else { log("parse pb failed"); } }
uint32_t ClientConn::getGroupList(uint32_t nUserId) { CImPdu cPdu; IM::Group::IMNormalGroupListReq msg; msg.set_user_id(nUserId); printf("%d\n" , nUserId); cPdu.SetPBMsg(&msg); cPdu.SetServiceId(IM::BaseDefine::SID_GROUP); cPdu.SetCommandId(IM::BaseDefine::CID_GROUP_NORMAL_LIST_REQUEST); uint32_t nSeqNo = m_pSeqAlloctor->getSeq(ALLOCTOR_PACKET); cPdu.SetSeqNum(nSeqNo); SendPdu(&cPdu); return nSeqNo; }