本文整理汇总了C++中CImPdu::SetCommandId方法的典型用法代码示例。如果您正苦于以下问题:C++ CImPdu::SetCommandId方法的具体用法?C++ CImPdu::SetCommandId怎么用?C++ CImPdu::SetCommandId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CImPdu
的用法示例。
在下文中一共展示了CImPdu::SetCommandId方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _HandleMsgServRequest
void CLoginConn::_HandleMsgServRequest(CImPdu* pPdu)
{
IM::Login::IMMsgServReq msg;
msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength());
log("HandleMsgServReq. ");
// no MessageServer available
if (g_msg_serv_info.size() == 0) {
IM::Login::IMMsgServRsp msg;
msg.set_result_code(::IM::BaseDefine::REFUSE_REASON_NO_MSG_SERVER);
CImPdu pdu;
pdu.SetPBMsg(&msg);
pdu.SetServiceId(SID_LOGIN);
pdu.SetCommandId(CID_LOGIN_RES_MSGSERVER);
pdu.SetSeqNum(pPdu->GetSeqNum());
SendPdu(&pdu);
Close();
return;
}
// return a message server with minimum concurrent connection count
msg_serv_info_t* pMsgServInfo;
uint32_t min_user_cnt = (uint32_t)-1;
map<uint32_t, msg_serv_info_t*>::iterator it_min_conn = g_msg_serv_info.end(),it;
for (it = g_msg_serv_info.begin() ; it != g_msg_serv_info.end(); it++) {
pMsgServInfo = it->second;
if ( (pMsgServInfo->cur_conn_cnt < pMsgServInfo->max_conn_cnt) &&
(pMsgServInfo->cur_conn_cnt < min_user_cnt))
{
it_min_conn = it;
min_user_cnt = pMsgServInfo->cur_conn_cnt;
}
}
if (it_min_conn == g_msg_serv_info.end()) {
log("All TCP MsgServer are full ");
IM::Login::IMMsgServRsp msg;
msg.set_result_code(::IM::BaseDefine::REFUSE_REASON_MSG_SERVER_FULL);
CImPdu pdu;
pdu.SetPBMsg(&msg);
pdu.SetServiceId(SID_LOGIN);
pdu.SetCommandId(CID_LOGIN_RES_MSGSERVER);
pdu.SetSeqNum(pPdu->GetSeqNum());
SendPdu(&pdu);
}
else
{
IM::Login::IMMsgServRsp msg;
msg.set_result_code(::IM::BaseDefine::REFUSE_REASON_NONE);
msg.set_prior_ip(it_min_conn->second->ip_addr1);
msg.set_backip_ip(it_min_conn->second->ip_addr2);
msg.set_port(it_min_conn->second->port);
CImPdu pdu;
pdu.SetPBMsg(&msg);
pdu.SetServiceId(SID_LOGIN);
pdu.SetCommandId(CID_LOGIN_RES_MSGSERVER);
pdu.SetSeqNum(pPdu->GetSeqNum());
SendPdu(&pdu);
}
Close(); // after send MsgServResponse, active close the connection
}
示例2: getDevicesToken
void getDevicesToken(CImPdu* pPdu, uint32_t conn_uuid)
{
IM::Server::IMGetDeviceTokenReq msg;
IM::Server::IMGetDeviceTokenRsp msgResp;
if(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()))
{
CacheManager* pCacheManager = CacheManager::getInstance();
CacheConn* pCacheConn = pCacheManager->GetCacheConn("token");
CImPdu* pPduResp = new CImPdu;
uint32_t nCnt = msg.user_id_size();
if (pCacheConn)
{
vector<string> vecTokens;
for (uint32_t i=0; i<nCnt; ++i) {
string strKey = "device_"+int2string(msg.user_id(i));
vecTokens.push_back(strKey);
}
map<string, string> mapTokens;
bool bRet = pCacheConn->mget(vecTokens, mapTokens);
pCacheManager->RelCacheConn(pCacheConn);
if(bRet)
{
for (auto it=mapTokens.begin(); it!=mapTokens.end(); ++it) {
string strKey = it->first;
size_t nPos = strKey.find("device_");
if( nPos != string::npos)
{
string strUserId = strKey.substr(nPos + strlen("device_"));
uint32_t nUserId = string2int(strUserId);
string strValue = it->second;
nPos = strValue.find(":");
if(nPos!=string::npos)
{
string strType = strValue.substr(0, nPos);
string strToken = strValue.substr(nPos + 1);
IM::BaseDefine::ClientType nClientType = IM::BaseDefine::ClientType(0);
if(strType == "ios")
{
nClientType = IM::BaseDefine::CLIENT_TYPE_IOS;
}
else if(strType == "android")
{
nClientType = IM::BaseDefine::CLIENT_TYPE_ANDROID;
}
if(IM::BaseDefine::ClientType_IsValid(nClientType))
{
IM::BaseDefine::UserTokenInfo* pToken = msgResp.add_user_token_info();
pToken->set_user_id(nUserId);
pToken->set_token(strToken);
pToken->set_user_type(nClientType);
uint32_t nTotalCnt = 0;
CMessageModel::getInstance()->getUnReadCntAll(nUserId, nTotalCnt);
CGroupMessageModel::getInstance()->getUnReadCntAll(nUserId, nTotalCnt);
pToken->set_push_count(nTotalCnt);
pToken->set_push_type(1);
}
else
{
log("invalid clientType.clientType=%u", nClientType);
}
}
else
{
log("invalid value. value=%s", strValue.c_str());
}
}
else
{
log("invalid key.key=%s", strKey.c_str());
}
}
}
else
{
log("mget failed!");
}
}
else
{
log("no cache connection for token");
}
log("req devices token.reqCnt=%u, resCnt=%u", nCnt, msgResp.user_token_info_size());
msgResp.set_attach_data(msg.attach_data());
pPduResp->SetPBMsg(&msgResp);
pPduResp->SetSeqNum(pPdu->GetSeqNum());
pPduResp->SetServiceId(IM::BaseDefine::SID_OTHER);
pPduResp->SetCommandId(IM::BaseDefine::CID_OTHER_GET_DEVICE_TOKEN_RSP);
CProxyConn::AddResponsePdu(conn_uuid, pPduResp);
}
else
{
log("parse pb failed");
}
}
示例3: _HandleGetDeviceTokenResponse
void CDBServConn::_HandleGetDeviceTokenResponse(CImPdu *pPdu)
{
IM::Server::IMGetDeviceTokenRsp msg;
CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()));
IM::Message::IMMsgData msg2;
CHECK_PB_PARSE_MSG(msg2.ParseFromArray(msg.attach_data().c_str(), msg.attach_data().length()));
string msg_data = msg2.msg_data();
uint32_t msg_type = msg2.msg_type();
uint32_t from_id = msg2.from_user_id();
uint32_t to_id = msg2.to_session_id();
if (msg_type == IM::BaseDefine::MSG_TYPE_SINGLE_TEXT || msg_type == IM::BaseDefine::MSG_TYPE_GROUP_TEXT)
{
//msg_data =
char* msg_out = NULL;
uint32_t msg_out_len = 0;
if (pAes->Decrypt(msg_data.c_str(), msg_data.length(), &msg_out, msg_out_len) == 0)
{
msg_data = string(msg_out, msg_out_len);
}
else
{
log("HandleGetDeviceTokenResponse, decrypt msg failed, from_id: %u, to_id: %u, msg_type: %u.", from_id, to_id, msg_type);
return;
}
pAes->Free(msg_out);
}
build_ios_push_flash(msg_data, msg2.msg_type(), from_id);
//{
// "msg_type": 1,
// "from_id": "1345232",
// "group_type": "12353",
//}
jsonxx::Object json_obj;
json_obj << "msg_type" << (uint32_t)msg2.msg_type();
json_obj << "from_id" << from_id;
if (CHECK_MSG_TYPE_GROUP(msg2.msg_type())) {
json_obj << "group_id" << to_id;
}
uint32_t user_token_cnt = msg.user_token_info_size();
log("HandleGetDeviceTokenResponse, user_token_cnt = %u.", user_token_cnt);
IM::Server::IMPushToUserReq msg3;
for (uint32_t i = 0; i < user_token_cnt; i++)
{
IM::BaseDefine::UserTokenInfo user_token = msg.user_token_info(i);
uint32_t user_id = user_token.user_id();
string device_token = user_token.token();
uint32_t push_cnt = user_token.push_count();
uint32_t client_type = user_token.user_type();
//自己发得消息不给自己发推送
if (from_id == user_id) {
continue;
}
log("HandleGetDeviceTokenResponse, user_id = %u, device_token = %s, push_cnt = %u, client_type = %u.",
user_id, device_token.c_str(), push_cnt, client_type);
CImUser* pUser = CImUserManager::GetInstance()->GetImUserById(user_id);
if (pUser)
{
msg3.set_flash(msg_data);
msg3.set_data(json_obj.json());
IM::BaseDefine::UserTokenInfo* user_token_tmp = msg3.add_user_token_list();
user_token_tmp->set_user_id(user_id);
user_token_tmp->set_user_type((IM::BaseDefine::ClientType)client_type);
user_token_tmp->set_token(device_token);
user_token_tmp->set_push_count(push_cnt);
//pc client登录,则为勿打扰式推送
if (pUser->GetPCLoginStatus() == IM_PC_LOGIN_STATUS_ON)
{
user_token_tmp->set_push_type(IM_PUSH_TYPE_SILENT);
log("HandleGetDeviceTokenResponse, user id: %d, push type: silent.", user_id);
}
else
{
user_token_tmp->set_push_type(IM_PUSH_TYPE_NORMAL);
log("HandleGetDeviceTokenResponse, user id: %d, push type: normal.", user_id);
}
}
else
{
IM::Server::IMPushToUserReq msg4;
msg4.set_flash(msg_data);
msg4.set_data(json_obj.json());
IM::BaseDefine::UserTokenInfo* user_token_tmp = msg4.add_user_token_list();
user_token_tmp->set_user_id(user_id);
user_token_tmp->set_user_type((IM::BaseDefine::ClientType)client_type);
user_token_tmp->set_token(device_token);
user_token_tmp->set_push_count(push_cnt);
user_token_tmp->set_push_type(IM_PUSH_TYPE_NORMAL);
CImPdu pdu;
pdu.SetPBMsg(&msg4);
pdu.SetServiceId(SID_OTHER);
pdu.SetCommandId(CID_OTHER_PUSH_TO_USER_REQ);
CPduAttachData attach_data(ATTACH_TYPE_PDU_FOR_PUSH, 0, pdu.GetBodyLength(), pdu.GetBodyData());
IM::Buddy::IMUsersStatReq msg5;
//.........这里部分代码省略.........
示例4: _HandleMsgData
void CDBServConn::_HandleMsgData(CImPdu *pPdu)
{
IM::Message::IMMsgData msg;
CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()));
if (CHECK_MSG_TYPE_GROUP(msg.msg_type())) {
s_group_chat->HandleGroupMessage(pPdu);
return;
}
uint32_t from_user_id = msg.from_user_id();
uint32_t to_user_id = msg.to_session_id();
uint32_t msg_id = msg.msg_id();
if (msg_id == 0) {
log("HandleMsgData, write db failed, %u->%u.", from_user_id, to_user_id);
return;
}
uint8_t msg_type = msg.msg_type();
CDbAttachData attach_data((uchar_t*)msg.attach_data().c_str(), msg.attach_data().length());
uint32_t handle = attach_data.GetHandle();
log("HandleMsgData, from_user_id=%u, to_user_id=%u, msg_id=%u.", from_user_id, to_user_id, msg_id);
CMsgConn* pMsgConn = CImUserManager::GetInstance()->GetMsgConnByHandle(from_user_id, attach_data.GetHandle());
if (pMsgConn)
{
IM::Message::IMMsgDataAck msg2;
msg2.set_user_id(from_user_id);
msg2.set_msg_id(msg_id);
msg2.set_session_id(to_user_id);
msg2.set_session_type(::IM::BaseDefine::SESSION_TYPE_SINGLE);
CImPdu pdu;
pdu.SetPBMsg(&msg2);
pdu.SetServiceId(SID_MSG);
pdu.SetCommandId(CID_MSG_DATA_ACK);
pdu.SetSeqNum(pPdu->GetSeqNum());
pMsgConn->SendPdu(&pdu);
}
CRouteServConn* pRouteConn = get_route_serv_conn();
if (pRouteConn) {
pRouteConn->SendPdu(pPdu);
}
msg.clear_attach_data();
pPdu->SetPBMsg(&msg);
CImUser* pFromImUser = CImUserManager::GetInstance()->GetImUserById(from_user_id);
CImUser* pToImUser = CImUserManager::GetInstance()->GetImUserById(to_user_id);
pPdu->SetSeqNum(0);
if (pFromImUser) {
pFromImUser->BroadcastClientMsgData(pPdu, msg_id, pMsgConn, from_user_id);
}
if (pToImUser) {
pToImUser->BroadcastClientMsgData(pPdu, msg_id, NULL, from_user_id);
}
IM::Server::IMGetDeviceTokenReq msg3;
msg3.add_user_id(to_user_id);
msg3.set_attach_data(pPdu->GetBodyData(), pPdu->GetBodyLength());
CImPdu pdu2;
pdu2.SetPBMsg(&msg3);
pdu2.SetServiceId(SID_OTHER);
pdu2.SetCommandId(CID_OTHER_GET_DEVICE_TOKEN_REQ);
SendPdu(&pdu2);
}
示例5: _HandleValidateResponse
void CDBServConn::_HandleValidateResponse(CImPdu* pPdu)
{
IM::Server::IMValidateRsp msg;
CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()));
string login_name = msg.user_name();
uint32_t result = msg.result_code();
string result_string = msg.result_string();
CDbAttachData attach_data((uchar_t*)msg.attach_data().c_str(), msg.attach_data().length());
log("HandleValidateResp, user_name=%s, result=%d", login_name.c_str(), result);
CImUser* pImUser = CImUserManager::GetInstance()->GetImUserByLoginName(login_name);
CMsgConn* pMsgConn = NULL;
if (!pImUser) {
log("ImUser for user_name=%s not exist", login_name.c_str());
return;
} else {
pMsgConn = pImUser->GetUnValidateMsgConn(attach_data.GetHandle());
if (!pMsgConn || pMsgConn->IsOpen()) {
log("no such conn is validated, user_name=%s", login_name.c_str());
return;
}
}
if (result != 0) {
result = IM::BaseDefine::REFUSE_REASON_DB_VALIDATE_FAILED;
}
if (result == 0)
{
IM::BaseDefine::UserInfo user_info = msg.user_info();
uint32_t user_id = user_info.user_id();
CImUser* pUser = CImUserManager::GetInstance()->GetImUserById(user_id);
if (pUser)
{
pUser->AddUnValidateMsgConn(pMsgConn);
pImUser->DelUnValidateMsgConn(pMsgConn);
if (pImUser->IsMsgConnEmpty())
{
CImUserManager::GetInstance()->RemoveImUserByLoginName(login_name);
delete pImUser;
}
}
else
{
pUser = pImUser;
}
pUser->SetUserId(user_id);
pUser->SetNickName(user_info.user_nick_name());
pUser->SetValidated();
CImUserManager::GetInstance()->AddImUserById(user_id, pUser);
pUser->KickOutSameClientType(pMsgConn->GetClientType(), IM::BaseDefine::KICK_REASON_DUPLICATE_USER, pMsgConn);
CRouteServConn* pRouteConn = get_route_serv_conn();
if (pRouteConn) {
IM::Server::IMServerKickUser msg2;
msg2.set_user_id(user_id);
msg2.set_client_type((::IM::BaseDefine::ClientType)pMsgConn->GetClientType());
msg2.set_reason(1);
CImPdu pdu;
pdu.SetPBMsg(&msg2);
pdu.SetServiceId(SID_OTHER);
pdu.SetCommandId(CID_OTHER_SERVER_KICK_USER);
pRouteConn->SendPdu(&pdu);
}
log("user_name: %s, uid: %d", login_name.c_str(), user_id);
pMsgConn->SetUserId(user_id);
pMsgConn->SetOpen();
pMsgConn->SendUserStatusUpdate(IM::BaseDefine::USER_STATUS_ONLINE);
pUser->ValidateMsgConn(pMsgConn->GetHandle(), pMsgConn);
IM::Login::IMLoginRes msg3;
msg3.set_server_time(time(NULL));
msg3.set_result_code(IM::BaseDefine::REFUSE_REASON_NONE);
msg3.set_result_string(result_string);
msg3.set_online_status((IM::BaseDefine::UserStatType)pMsgConn->GetOnlineStatus());
IM::BaseDefine::UserInfo* user_info_tmp = msg3.mutable_user_info();
user_info_tmp->set_user_id(user_info.user_id());
user_info_tmp->set_user_gender(user_info.user_gender());
user_info_tmp->set_user_nick_name(user_info.user_nick_name());
user_info_tmp->set_avatar_url(user_info.avatar_url());
user_info_tmp->set_department_id(user_info.department_id());
user_info_tmp->set_email(user_info.email());
user_info_tmp->set_user_real_name(user_info.user_real_name());
user_info_tmp->set_user_tel(user_info.user_tel());
user_info_tmp->set_user_domain(user_info.user_domain());
user_info_tmp->set_status(user_info.status());
CImPdu pdu2;
pdu2.SetPBMsg(&msg3);
pdu2.SetServiceId(SID_LOGIN);
pdu2.SetCommandId(CID_LOGIN_RES_USERLOGIN);
pdu2.SetSeqNum(pPdu->GetSeqNum());
pMsgConn->SendPdu(&pdu2);
}
else
{
IM::Login::IMLoginRes msg4;
msg4.set_server_time(time(NULL));
//.........这里部分代码省略.........
示例6: _HandleUsersStatusResponse
void CRouteServConn::_HandleUsersStatusResponse(CImPdu* pPdu)
{
IM::Buddy::IMUsersStatRsp msg;
CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()));
uint32_t user_id = msg.user_id();
uint32_t result_count = msg.user_stat_list_size();
log("HandleUsersStatusResp, user_id=%u, query_count=%u ", user_id, result_count);
CPduAttachData attach_data((uchar_t*)msg.attach_data().c_str(), msg.attach_data().length());
if (attach_data.GetType() == ATTACH_TYPE_HANDLE)
{
uint32_t handle = attach_data.GetHandle();
CMsgConn* pConn = CImUserManager::GetInstance()->GetMsgConnByHandle(user_id, handle);
if (pConn) {
msg.clear_attach_data();
pPdu->SetPBMsg(&msg);
pConn->SendPdu(pPdu);
}
}
else if (attach_data.GetType() == ATTACH_TYPE_PDU_FOR_PUSH)
{
IM::BaseDefine::UserStat user_stat = msg.user_stat_list(0);
IM::Server::IMPushToUserReq msg2;
CHECK_PB_PARSE_MSG(msg2.ParseFromArray(attach_data.GetPdu(), attach_data.GetPduLength()));
IM::BaseDefine::UserTokenInfo* user_token = msg2.mutable_user_token_list(0);
//pc client登录,则为勿打扰式推送
if (user_stat.status() == IM::BaseDefine::USER_STATUS_ONLINE)
{
user_token->set_push_type(IM_PUSH_TYPE_SILENT);
log("HandleUsersStatusResponse, user id: %d, push type: normal. ", user_stat.user_id());
}
else
{
user_token->set_push_type(IM_PUSH_TYPE_NORMAL);
log("HandleUsersStatusResponse, user id: %d, push type: normal. ", user_stat.user_id());
}
CImPdu pdu;
pdu.SetPBMsg(&msg2);
pdu.SetServiceId(SID_OTHER);
pdu.SetCommandId(CID_OTHER_PUSH_TO_USER_REQ);
CPushServConn* PushConn = get_push_serv_conn();
if (PushConn)
{
PushConn->SendPdu(&pdu);
}
}
else if (attach_data.GetType() == ATTACH_TYPE_HANDLE_AND_PDU_FOR_FILE)
{
IM::BaseDefine::UserStat user_stat = msg.user_stat_list(0);
IM::Server::IMFileTransferReq msg3;
CHECK_PB_PARSE_MSG(msg3.ParseFromArray(attach_data.GetPdu(), attach_data.GetPduLength()));
uint32_t handle = attach_data.GetHandle();
IM::BaseDefine::FileType trans_mode = IM::BaseDefine::FILE_TYPE_OFFLINE;
if (user_stat.status() == IM::BaseDefine::USER_STATUS_ONLINE)
{
trans_mode = IM::BaseDefine::FILE_TYPE_ONLINE;
}
msg3.set_trans_mode(trans_mode);
CImPdu pdu;
pdu.SetPBMsg(&msg3);
pdu.SetServiceId(SID_OTHER);
pdu.SetCommandId(CID_OTHER_FILE_TRANSFER_REQ);
pdu.SetSeqNum(pPdu->GetSeqNum());
CFileServConn* pConn = get_random_file_serv_conn();
if (pConn) {
pConn->SendPdu(&pdu);
}
else
{
log("no file server ");
IM::File::IMFileRsp msg4;
msg4.set_result_code(1);
msg4.set_from_user_id(msg3.from_user_id());
msg4.set_to_user_id(msg3.to_user_id());
msg4.set_file_name(msg3.file_name());
msg4.set_task_id("");
msg4.set_trans_mode(msg3.trans_mode());
CImPdu pdu2;
pdu2.SetPBMsg(&msg4);
pdu2.SetServiceId(SID_FILE);
pdu2.SetCommandId(CID_FILE_RESPONSE);
pdu2.SetSeqNum(pPdu->GetSeqNum());
CMsgConn* pMsgConn = CImUserManager::GetInstance()->GetMsgConnByHandle(msg3.from_user_id(),handle);
if (pMsgConn)
{
pMsgConn->SendPdu(&pdu2);
}
}
}
}
示例7: _HandleValidateResponse
//.........这里部分代码省略.........
ios_total_users++;
break;
case IM::BaseDefine::CLIENT_TYPE_WEB:
web_total_users++;
break;
}
if (result == 0)
{
IM::BaseDefine::UserInfo user_info = msg.user_info();
uint32_t user_id = user_info.user_id();
CImUser* pUser = CImUserManager::GetInstance()->GetImUserById(user_id);
if (pUser)
{
log("_HandleValidateResponse, get user %u(%p) key=%s %p", user_id, pUser, strKey.c_str(), pMsgConn);
pUser->AddUnValidateMsgConn(pMsgConn);
pImUser->DelUnValidateMsgConn(pMsgConn);
if (pImUser->IsMsgConnEmpty())
{
CImUserManager::GetInstance()->RemoveImUserByLoginName(login_name);
delete pImUser;
}
}
else
{
pUser = pImUser;
log("_HandleValidateResponse, use login user %u(%p) key=%s %p", user_id, pUser, strKey.c_str(), pMsgConn);
}
pUser->SetUserId(user_id);
pUser->SetNickName(user_info.user_nick_name());
pUser->SetValidated();
CImUserManager::GetInstance()->AddImUserById(user_id, pUser);
log("user_name: %s, uid: %d(%p)", login_name.c_str(), user_id, pMsgConn);
pMsgConn->SetKey(strKey);
pMsgConn->SetUserId(user_id);
pMsgConn->SetOpen();
pMsgConn->SendUserStatusUpdate(IM::BaseDefine::USER_STATUS_ONLINE);
CRouteServConn* pRouteConn = get_route_serv_conn();
if (pRouteConn) {
IM::Server::IMServerKickUser msg2;
msg2.set_user_id(user_id);
msg2.set_client_type((::IM::BaseDefine::ClientType)pMsgConn->GetClientType());
msg2.set_reason(1);
CImPdu pdu;
pdu.SetPBMsg(&msg2);
pdu.SetServiceId(SID_OTHER);
pdu.SetCommandId(CID_OTHER_SERVER_KICK_USER);
pRouteConn->SendPdu(&pdu);
}
pUser->ValidateMsgConn(pMsgConn->GetHandle(), pMsgConn);
//pUser->KickOutSameClientType(pMsgConn->GetClientType(), IM::BaseDefine::KICK_REASON_DUPLICATE_USER, user_id);
pUser->KickOutSameClientType(pMsgConn->GetClientType(), IM::BaseDefine::KICK_REASON_DUPLICATE_USER, pMsgConn);
IM::Login::IMLoginRes msg3;
msg3.set_server_time(time(NULL));
msg3.set_result_code(IM::BaseDefine::REFUSE_REASON_NONE);
msg3.set_result_string(result_string);
msg3.set_online_status((IM::BaseDefine::UserStatType)pMsgConn->GetOnlineStatus());
msg3.set_client_key(strKey);
IM::BaseDefine::UserInfo* user_info_tmp = msg3.mutable_user_info();
user_info_tmp->set_user_id(user_info.user_id());
user_info_tmp->set_user_gender(user_info.user_gender());
user_info_tmp->set_user_nick_name(user_info.user_nick_name());
user_info_tmp->set_avatar_url(user_info.avatar_url());
user_info_tmp->set_sign_info(user_info.sign_info());
user_info_tmp->set_department_id(user_info.department_id());
user_info_tmp->set_email(user_info.email());
user_info_tmp->set_user_real_name(user_info.user_real_name());
user_info_tmp->set_user_tel(user_info.user_tel());
user_info_tmp->set_user_domain(user_info.user_domain());
user_info_tmp->set_status(user_info.status());
user_info_tmp->set_user_type(user_info.user_type());
log("id:%u gender:%u nick:%s avatar:%s sign:%s depid:%u email:%s name:%s tel:%s uname:%s status:%u type:%u", user_info.user_id(), user_info.user_gender(), user_info.user_nick_name().c_str(), user_info.avatar_url().c_str(), user_info.sign_info().c_str(), user_info.department_id(), user_info.email().c_str(), user_info.user_real_name().c_str(), user_info.user_tel().c_str(), user_info.user_domain().c_str(), user_info.status(), user_info.user_type());
CImPdu pdu2;
pdu2.SetPBMsg(&msg3);
pdu2.SetServiceId(SID_LOGIN);
pdu2.SetCommandId(CID_LOGIN_RES_USERLOGIN);
pdu2.SetSeqNum(pPdu->GetSeqNum());
pMsgConn->SendPdu(&pdu2);
}
else
{
fail_users++;
IM::Login::IMLoginRes msg4;
msg4.set_server_time(time(NULL));
msg4.set_result_code((IM::BaseDefine::ResultType)result);
msg4.set_result_string(result_string);
CImPdu pdu3;
pdu3.SetPBMsg(&msg4);
pdu3.SetServiceId(SID_LOGIN);
pdu3.SetCommandId(CID_LOGIN_RES_USERLOGIN);
pdu3.SetSeqNum(pPdu->GetSeqNum());
pMsgConn->SendPdu(&pdu3);
pMsgConn->Close();
}
}