AIM_RESULT OnRspGetProfile(AMVoid *pvArg, AIM_RSP_GET_PROFILE *pRspGetProfile) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = 0; AMInt32 iContentLen = 0, i = 0, iPos = 0, iLen = 0;; pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; pMsg->eType = (AIM_MSG_TYPE)GET_PEER_UDB_PROFILE; IAIMessage_SetCntID(pMsg, pRspGetProfile->szContactId, AMStrlen(pRspGetProfile->szContactId)); iContentLen = pRspGetProfile->iTotalLen + 4 + AMStrlen(pRspGetProfile->szContactId) + sizeof(UID_KEYWROD_ID); iContentLen += pRspGetProfile->iCount*2; pMsg->szContent = (AMChar *)AMMalloc(iContentLen); if(AMNULL == pMsg->szContent) { IAIMessage_Destroy(pMsg); return eAIM_RESULT_NOT_READY; } AMMemset(pMsg->szContent, 0, iContentLen); for(i=0; i<pRspGetProfile->iCount; i++) { if(AMNULL != pRspGetProfile->pszValues[i]) { iLen = AMStrlen(pRspGetProfile->pszKeys[i]); AMMemcpy(pMsg->szContent+iPos, pRspGetProfile->pszKeys[i], iLen); iPos += iLen; pMsg->szContent[iPos++] = '\1'; iLen = AMStrlen(pRspGetProfile->pszValues[i]); AMMemcpy(pMsg->szContent+iPos, pRspGetProfile->pszValues[i], iLen); iPos += iLen; pMsg->szContent[iPos++] = '\1'; } } AMMemcpy(pMsg->szContent+iPos, UID_KEYWROD_ID, sizeof(UID_KEYWROD_ID)-1);//加上"uid\1'contactId'" iPos += sizeof(UID_KEYWROD_ID)-1; pMsg->szContent[iPos++] = '\1'; AMStrcat(pMsg->szContent+iPos, pRspGetProfile->szContactId);//不需要尾巴了 DPRINT("IASessionModel_OnPeerVerifyConfig.................%s\n", pMsg->szContent); Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); return eAIM_RESULT_OK; }
AIM_RESULT OnRspGetDegree(AMVoid *pvArg, AIM_RSP_GET_DEGREE *pRspGetDegree) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = AMNULL; AMChar *pBuf = AMNULL; AMInt32 iLen = 0; AMAssert(AMNULL != pIM && AMNULL != pRspGetDegree); DPRINT("IASessionModel_OnGetDegree.........................Entering!\n"); pMsg = IAIMessage_Create(); if(pRspGetDegree->szContactId) IAIMessage_SetCntID(pMsg, pRspGetDegree->szContactId, AMStrlen(pRspGetDegree->szContactId)); if(0 == pRspGetDegree->iRetCode)//成功 { pMsg->eType = (AIM_MSG_TYPE)GET_DEGREE_OK; pBuf = (AMChar *)AMMalloc(MAX_INT_NUMBER_LEN*3); if(AMNULL == pBuf) { IAIMessage_Destroy(pMsg); return eAIM_RESULT_MALLOC_ERROR; } AMMemset(pBuf, 0, MAX_INT_NUMBER_LEN*3); iLen += _AIMItoa(pRspGetDegree->iUserLevel, pBuf); pBuf[iLen++] = ','; iLen += _AIMItoa(pRspGetDegree->iTotalDegree, pBuf+iLen); pBuf[iLen++] = ','; iLen += _AIMItoa(pRspGetDegree->iNeedDegree, pBuf+iLen); pMsg->szContent = pBuf; } else//失败 { DPRINT("IASessionModel_OnGetDegree.......................Fail!\n"); pMsg->eType = (AIM_MSG_TYPE)GET_DEGREE_FAIL; } DPRINT("IASessionModel_OnGetDegree.......................%s\n", pMsg->szContent); Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); DPRINT("IASessionModel_OnGetDegree.........................OK!\n"); return eAIM_RESULT_OK; }
AIM_RESULT OnRspGetMemo(AMVoid *pvArg, AIM_RSP_GET_MEMO *pRspGetMemo) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = AMNULL; AMChar *pBuf = AMNULL; AMInt32 iLen = 0; AMAssert(AMNULL != pIM && AMNULL != pRspGetMemo); DPRINT("IASessionModel_OnGetCntMemo.........................Entering!\n"); pMsg = IAIMessage_Create(); if(pRspGetMemo->szContactId) IAIMessage_SetCntID(pMsg, pRspGetMemo->szContactId, AMStrlen(pRspGetMemo->szContactId)); if(0 == pRspGetMemo->iRetCode)//成功 { pMsg->eType = (AIM_MSG_TYPE)GET_CNTMEMO_OK; IAIMessage_SetContent(pMsg, pRspGetMemo->szMemo, AMStrlen(pRspGetMemo->szMemo)); } else//失败 { pMsg->eType = (AIM_MSG_TYPE)GET_CNTMEMO_FAIL; } DPRINT("IASessionModel_OnGetCntMemo.......................%s\n", pMsg->szContent); Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); DPRINT("IASessionModel_OnGetCntMemo.........................OK!\n"); return eAIM_RESULT_OK; }
AIM_RESULT OnRspChgSignature(AMVoid *pvArg, AIM_RSP_CHG_SIGNATURE *pRspChgSignature) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = 0; AMAssert(AMNULL != pIM && AMNULL != pIM->pAcnt); pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; if(!pRspChgSignature->iRetCode) { pMsg->eType = (AIM_MSG_TYPE)CHG_SIGNATURE_OK; IAIMessage_SetContent(pMsg, pIM->pAcnt->szSignature, AMStrlen(pIM->pAcnt->szSignature)); DPRINT("IAIM_OnChgSignature..............%s\n", pIM->pAcnt->szSignature); } else { pMsg->eType = (AIM_MSG_TYPE)CHG_SIGNATURE_FAIL; DPRINT("IAIM_OnChgSignature...................Faile!\n"); } Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); return eAIM_RESULT_OK; }
AIM_RESULT OnRspChgSrvMode(AMVoid *pvArg, AIM_RSP_CHG_SRV_MODE *pRspChgSrvMode) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = AMNULL; AMAssert(AMNULL != pIM && AMNULL != pRspChgSrvMode); pMsg = IAIMessage_Create(); if(!pRspChgSrvMode->iRetCode) { pMsg->eType = (AIM_MSG_TYPE)CHG_SERV_MODE_OK; IAIMessage_SetCntID(pMsg, pIM->pAcnt->szID, AMStrlen(pIM->pAcnt->szID)); DPRINT("IASessionModel_OnHelpChgSrvMode........CHG_SERV_MODE_OK %s, %s\n", pMsg->szContactID, pMsg->szContent); } else { pMsg->eType = (AIM_MSG_TYPE)CHG_SERV_MODE_FAIL; DPRINT("IASessionModel_OnHelpChgSrvMode........CHG_SERV_MODE_FAIL %d!\n", pRspChgSrvMode->iRetCode); } Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); DPRINT("IASessionModel_OnHelpChgSrvMode.........................OK!\n"); return eAIM_RESULT_OK; }
AIM_RESULT OnNtfHelpLogin(AMVoid *pvArg, AIM_NTF_HELP_LOGIN *pNtfHelpLogin) { IAIMessage *pMsg = AMNULL; IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); AMAssert(AMNULL != pIM && AMNULL != pNtfHelpLogin); pMsg = IAIMessage_Create(); if(!pNtfHelpLogin->iRetCode) { pMsg->eType = (AIM_MSG_TYPE)HELP_LOGIN_OK; IAIMessage_SetCntID(pMsg, pNtfHelpLogin->szParentId, AMStrlen(pNtfHelpLogin->szParentId)); IAIMessage_SetContent(pMsg, " ", 1); pMsg->szContent[0] = '0' + pNtfHelpLogin->uiMulStatus; DPRINT("OnNtfHelpLogin................HELP_LOGIN_OK %s, %s!\n", pMsg->szContactID, pMsg->szContent); } else { pMsg->eType = (AIM_MSG_TYPE)HELP_LOGIN_FAIL; DPRINT("OnNtfHelpLogin................HELP_LOGIN_FAIL! %d\n", pNtfHelpLogin->iRetCode); } Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); DPRINT("OnNtfHelpLogin.........................OK!\n"); return eAIM_RESULT_OK; }
AIM_RESULT OnRspDelContact(AMVoid *pvArg, AIM_RSP_DEL_CONTACT *pRspDelContact) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = AMNULL; if(!pRspDelContact->iRetCode && pRspDelContact->szContactId) { pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; pMsg->eType = (AIM_MSG_TYPE)REMOVE_CNT_SUCESS; IAIMessage_SetCntID(pMsg, pRspDelContact->szContactId, AMStrlen(pRspDelContact->szContactId)); Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); } return eAIM_RESULT_OK; }
//iFlag : 0 release handle Array, and every msg; 1 release handle array only; 2 release every msg only AIM_RESULT AIMSession_ReleaseMsgs( AMHandle hSession, AMHandle *phHandleArray, AMInt32 iCount, AMInt32 iFlag) { IASession *pSession = (IASession *)hSession; AMAssert(AMNULL != pSession && iFlag>-1 && iFlag < 3); if(iCount && 1 != iFlag) { AMInt32 i=0; for(i=0; i<iCount; i++) IAIMessage_Destroy((IAIMessage*)phHandleArray[i]); } if(2 != iFlag) AMFree(phHandleArray);//利用free不释放NULL的特点。 return eAIM_RESULT_OK; }
AIM_RESULT OnRspGetVerify(AMVoid *pvArg, AIM_RSP_GET_VERIFY *pRspGetVerify) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = 0; AMChar szBuf[20] = {0}; AMAssert(NULL != pIM && NULL != pIM->pAcnt); pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; pMsg->eType = (AIM_MSG_TYPE)GET_PEER_ADD_VERIFY; IAIMessage_SetCntID(pMsg, pRspGetVerify->szContactId, AMStrlen(pRspGetVerify->szContactId)); _AIMItoa(pRspGetVerify->iRetCode, szBuf); IAIMessage_SetContent(pMsg, szBuf, AMStrlen(szBuf)); DPRINT("IASessionModel_OnPeerVerifyConfig..............%s\n", pMsg->szContent); Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); return eAIM_RESULT_OK; }
AIM_RESULT OnRspDelBlack(AMVoid *pvArg, AIM_RSP_DEL_BLACK *pRspDelBlack) { IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); IAIMessage *pMsg = AMNULL; pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; IAIMessage_SetCntID(pMsg, pRspDelBlack->szBlackId, AMStrlen(pRspDelBlack->szBlackId)); if(!pRspDelBlack->iRetCode) { pMsg->eType = (AIM_MSG_TYPE)REMOVE_BLK_SUCESS; } else { pMsg->eType = (AIM_MSG_TYPE)REMOVE_BLK_FAILED; } Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); return eAIM_RESULT_OK; }
AIM_RESULT OnRspChgVerify(AMVoid *pvArg, AIM_RSP_CHG_VERIFY *pRspChgVerify) { IAIMessage *pMsg = AMNULL; IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]); pMsg = IAIMessage_Create(); pMsg->bUnread = AMTRUE; if(0 == pRspChgVerify->iRetCode) { pMsg->eType = (AIM_MSG_TYPE)CHG_VERIFY_OK; } else { pMsg->eType = (AIM_MSG_TYPE)CHG_VERIFY_FAILE; } IAIMessage_SetContent(pMsg, "0", 1); pMsg->szContent[0] = '0' + pIM->pAcnt->iVerifyType; Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg); IAIMessage_Destroy(pMsg); return eAIM_RESULT_OK; }