コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}
コード例 #4
0
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;
}
コード例 #5
0
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;
}
コード例 #6
0
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;
}
コード例 #7
0
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;
}
コード例 #8
0
//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;
}
コード例 #9
0
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;
}
コード例 #10
0
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;
}
コード例 #11
0
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;
}