void ClientConn::_HandleDepartMentInfo(CImPdu *pPdu) { IM::Buddy::IMDepartmentRsp msgResp; uint32_t nSeqNo = pPdu->GetSeqNum(); if(msgResp.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength())) { uint32_t nUserId = msgResp.user_id(); uint32_t lastest_update_time = msgResp.latest_update_time(); uint32_t departCnt = msgResp.dept_list_size(); list<IM::BaseDefine::DepartInfo> lsDepartInfo; for (uint32_t i=0; i<departCnt; ++i) { IM::BaseDefine::DepartInfo departInfo = msgResp.dept_list(i); lsDepartInfo.push_back(departInfo); } m_pCallback->onGetDepartMentInfo(nSeqNo, nUserId , lastest_update_time, lsDepartInfo); } else { m_pCallback->onError(nSeqNo, pPdu->GetCommandId(), "parse pb error"); } }