Пример #1
0
AMInt32	_AIMAuth_setSession(AIMAuth *pAuth, const AMChar *szSession)
{
	AMInt32 iLen = 0;
	AMAssert(pAuth && szSession);
	iLen = AMStrlen(szSession);
	AMAssert(iLen);
	
	if(pAuth->szSession)
	{
		AMFree(pAuth->szSession);
		pAuth->szSession = AMNULL;
	}
#if 1	//dynamic
	pAuth->szSession = szSession;
#else
	pAuth->szSession = (AMChar *)AMMalloc(iLen + 1);
	if(!pAuth->szSession)
		return eAIM_RESULT_MALLOC_ERROR;

	AMStrcpy(pAuth->szSession, szSession);
#endif
	pAuth->iStatus = eAUTH_SESSION;

	return eAIM_RESULT_OK;
}
Пример #2
0
AMVoid			IAccount_SetNameType(AIMAccount *pAcnt, const AMChar *szName, AMUInt32 uiNameLen, AIM_ACCOUNT_TYPE eType)
{
	AMAssert(0 != pAcnt);
	AMAssert(0 != szName  && eType>=0 && eType <= 8);

	if(pAcnt->szName)
	{
		AMFree(pAcnt->szName);
		pAcnt->szName = 0;
	}
	pAcnt->szName = AMMalloc(uiNameLen + 1);
	AMAssert(0 != pAcnt->szName);
	AMMemset(pAcnt->szName, 0, uiNameLen + 1);
	AMMemcpy(pAcnt->szName, szName, uiNameLen);
	
	pAcnt->eType = eType;

	if(pAcnt->szID)
	{
		AMFree(pAcnt->szID);
		pAcnt->szID = 0;
	}
	pAcnt->szID = AMMalloc(uiNameLen + ID_HEAD_LEN + 1);
	AMAssert(0 != pAcnt->szID);
	AMMemset(pAcnt->szID, 0, uiNameLen + ID_HEAD_LEN + 1);
	AMStrcpy(pAcnt->szID, szID_Head[eType]);
	AMMemcpy(pAcnt->szID + ID_HEAD_LEN, szName, uiNameLen);
}
Пример #3
0
AMChar	*	BuildSigXML(const AMChar *szSigXML, const AMChar *szSignature)
{
	AIM_SIGNATURE	sigStruct;
	AMChar *szRetXML = AMNULL, *szLeft = AMNULL;

	AMAssert(szSigXML);

	if(0 != SigXML2SigStruct(szSigXML, &sigStruct))
		return AMNULL;

	if(AMNULL == (szRetXML = BuildSigXMLFromStruct(&sigStruct, szSignature)))
		return AMNULL;

	AMStrcat(szRetXML, XML_SIG_TEMPHEAD + sizeof(HeadTag(XML_TAG_SIGOP)) + sizeof(HeadTag(XML_TAG_SIG)) + sizeof(TailTag(XML_TAG_SIG)) -1);
	AMStrcat(szRetXML, "0");
	AMStrcat(szRetXML, XML_SIG_TEMPTAIL);

	if(!szSignature || !*szSignature)
	{
		szLeft = AMStrstr(szRetXML, HeadTag(XML_TAG_EMP));
		AMAssert(szLeft);
		szLeft[sizeof(HeadTag(XML_TAG_EMP))-1]='1';
	}

	return szRetXML;
}
Пример #4
0
AIM_RESULT	OnNtfUserInfo(AMVoid *pvArg, AIM_NTF_USER_INFO *pNtfUserInfo)
{
    IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]);
    DPRINT("OnNtfUserInfo.........................Entering!\n");
    AMAssert(pIM && pIM->pAcnt);
    AMAssert(pNtfUserInfo);
    return (AIM_RESULT)JavaConnListener(pvArg, CONN_CB_GETUSERINFO, pNtfUserInfo->iImlevel<<8 | pIM->pAcnt->iVerifyType);
}
Пример #5
0
AMInt32 IAGroup_CmpPinyin(const AMVoid *pG1,const AMVoid *pG2, size_t t)
{
	IAGroup *pGA = (IAGroup*)pG1,
		*pGB = (IAGroup*)pG2;
	AMAssert(0 != pGA && 0 != pGB);
	AMAssert(0 != pGA->szPinyin && 0 != pGB->szPinyin);
	return AMStrcmp(pGA->szPinyin, pGB->szPinyin);
}
Пример #6
0
AMInt32		IASession_Cmp(const AMVoid *p1, const AMVoid *p2, size_t t)
{
	IASession *pA = (IASession*)p1,
		*pB = (IASession*)p2;
	AMAssert(0 != pA && 0 != pB);
	AMAssert(0 != pA->szContactID && 0 != pB->szContactID);
	return AMStrcmp(pA->szContactID, pB->szContactID);
}
Пример #7
0
AMInt32			IAccount_cmpID(const AMVoid *pA, const AMVoid *pB, size_t s)
{
	AIMAccount *pAcntA, *pAcntB;
	AMAssert(0 != pA && 0 != pB);
	pAcntA = (AIMAccount *)pA;
	pAcntB = (AIMAccount *)pB;
	AMAssert(pAcntA->szID != 0 && pAcntB->szID != 0);
	DPRINT("IAccount_cmpID.................%s, %s\n", pAcntA->szID, pAcntB->szID);
	return AMStrcmp(pAcntA->szID, pAcntB->szID);
}
Пример #8
0
AMVoid			IAccount_SetBindID(AIMAccount *pAcnt, const AMChar *szBindID, AMUInt32 uiIdLen)
{
	AMAssert(0 != pAcnt && 0 != szBindID);
	if(pAcnt->szBindID)
	{
		AMFree(pAcnt->szBindID);
		pAcnt->szBindID = 0;
	}
	pAcnt->szBindID = (AMChar *)AMMalloc(uiIdLen+1);
	AMAssert(0 != pAcnt->szBindID);
	AMMemcpy(pAcnt->szBindID, szBindID, uiIdLen);
	pAcnt->szBindID[uiIdLen] = 0;
}
Пример #9
0
AMVoid			IAccount_SetPwd(AIMAccount *pAcnt, const AMChar *szPwd, AMUInt32 uiPwdLen)
{
	AMAssert(0 != pAcnt && 0 != szPwd);
	if(pAcnt->szPwd)
	{
		AMFree(pAcnt->szPwd);
		pAcnt->szPwd = 0;
	}
	pAcnt->szPwd = (AMChar *)AMMalloc(uiPwdLen+1);
	AMAssert(0 != pAcnt->szPwd);
	AMMemcpy(pAcnt->szPwd, szPwd, uiPwdLen);
	pAcnt->szPwd[uiPwdLen] = 0;
}
Пример #10
0
AMVoid		IAGroup_SetPinyin(IAGroup *pGrp, AMChar *szPinyin, AMUInt32 uiLen)
{
	AMAssert(0 != pGrp && 0 != szPinyin && 0 < uiLen);
	if(pGrp->szPinyin)
	{
		AMFree(pGrp->szPinyin);
		pGrp->szPinyin = 0;
	}
	pGrp->szPinyin = (AMChar *)AMMalloc(uiLen + 1);
	AMAssert(0 != pGrp->szPinyin);
	AMMemcpy(pGrp->szPinyin, szPinyin, uiLen);
	pGrp->szPinyin[uiLen] = 0;
}
Пример #11
0
AMVoid		IAGroup_SetName(IAGroup *pGrp, AMChar *szName, AMUInt32 uiLen)
{
	AMAssert(0 != pGrp && 0 != szName && 0 < uiLen);
	if(pGrp->szName)
	{
		AMFree(pGrp->szName);
		pGrp->szName = 0;
	}
	pGrp->szName = (AMChar *)AMMalloc(uiLen + 1);
	AMAssert(0 != pGrp->szName);
	AMMemcpy(pGrp->szName, szName, uiLen);
	pGrp->szName[uiLen] = 0;
}
Пример #12
0
AMInt32			IAccount_SetID(AIMAccount *pAcnt, const AMChar *szID, AMUInt32 uiIdLen)
{
	AMUChar ucType = 0;
	AIM_ACCOUNT_TYPE	eType = eAIM_ACNTYPE_WRONG;
	AMAssert(0 != pAcnt && 0 != szID);

	eType = IAccount_TellType(szID, uiIdLen);

	AMAssert(eAIM_ACNTYPE_WRONG != eType);

	IAccount_SetNameType(pAcnt, szID+8, uiIdLen-8, eType);

	return 0;
}
Пример #13
0
AMVoid		IAIMessage_SetContent(IAIMessage *pMsg, const AMChar *szContent, AMUInt32 iLen)
{
	AMAssert(0 != pMsg);
	if(pMsg->szContent)
	{
		AMFree(pMsg->szContent);
		pMsg->szContent = 0;
	}

	pMsg->szContent = (AMChar *)AMMalloc(iLen + 1);
	AMAssert(0 != pMsg->szContent);
	AMMemcpy(pMsg->szContent, szContent, iLen);
	pMsg->szContent[iLen] = 0;
}
Пример #14
0
AMVoid		IAIMessage_SetCntID(IAIMessage *pMsg, const AMChar * szCntID, AMUInt32	uiIDLen)
{
	AMAssert(0 != pMsg && 0 != szCntID);
	if(pMsg->szContactID)
	{
		AMFree(pMsg->szContactID);
		pMsg->szContactID = 0;
	}

	pMsg->szContactID = (AMChar *)AMMalloc(uiIDLen + 1);
	AMAssert(0 != pMsg->szContactID);
	AMMemcpy(pMsg->szContactID, szCntID, uiIDLen);
	pMsg->szContactID[uiIDLen] = 0;
}
Пример #15
0
AIM_RESULT AIMSession_CountUnreadMsgs( AMHandle hSession, AMInt64 iID, AMInt32 *pCount )
{
	const IASession *pSession = (const IASession *)hSession;
	AMInt32		iRet = 0;
	AMInt32	rcSqlite = 0;
	AMChar	*szSql = AMNULL;
	AMChar *szErrMsg = AMNULL;

	AMAssert(AMNULL != pSession && AMNULL != pCount);
	AMAssert(AMNULL != pSession->pSesModel);
	AMAssert(AMNULL != pSession->pSesModel->pDB);

	if(0 == iID)
	{
		if(0 == AMStrcmp(pSession->szContactID, SYS_SES_NAME))//系统消息
		{
			szSql = sqlite3_mprintf(SQL_SELECT_UNREAD_SYS_MSG_COUNT);
		}
		else//普通聊天消息
		{
			szSql = sqlite3_mprintf(SQL_SELECT_UNREAD_CNT_MSG_COUNT, pSession->szContactID);
		}
	}
	else
	{
		szSql = sqlite3_mprintf(SQL_SELECT_UNREAD_COUNT_ID, iID);
	}

	if(szSql)
	{
		rcSqlite = sqlite3_exec(pSession->pSesModel->pDB, szSql, IASession_OnSelUnreadCnt, &iRet, &szErrMsg);

		sqlite3_free(szSql);

		if(SQLITE_OK != rcSqlite)
		{
			DPRINT("IASession_GetUnreadCnt.............can not %s for %s\n", szSql, szErrMsg);
			sqlite3_free(szErrMsg);
			return eAIM_RESULT_DB_ERROR;
		}

		*pCount = iRet;

		return eAIM_RESULT_OK;
	}
	else
	{
		return eAIM_RESULT_MALLOC_ERROR;
	}	
}
Пример #16
0
AMVoid			IAccount_SetWebMD5(AIMAccount *pAcnt, const AMChar *szToken, AMUInt32 uiTokenLen)
{
	AMAssert(0 != pAcnt && 0 != szToken);
	if(pAcnt->szWebMD5)
	{
		AMFree(pAcnt->szWebMD5);
		pAcnt->szWebMD5 = 0;
		pAcnt->uiWebMD5Len = 0;
	}
	pAcnt->szWebMD5 = (AMChar *)AMMalloc(uiTokenLen+1);
	AMAssert(0 != pAcnt->szWebMD5);
	AMMemcpy(pAcnt->szWebMD5, szToken, uiTokenLen);
	pAcnt->szWebMD5[uiTokenLen] = 0;
	pAcnt->uiWebMD5Len = uiTokenLen;
}
Пример #17
0
AMVoid			IAccount_SetPhoneNum(AIMAccount *pAcnt, const AMChar *szPhone)//, AMUInt32 uiPhoneLen)
{
	AMUInt32 uiPhoneLen = 0;
	AMAssert(0 != pAcnt && 0 != szPhone);
	if(pAcnt->szPhoneNum)
	{
		AMFree(pAcnt->szPhoneNum);
		pAcnt->szPhoneNum = 0;
	}
	uiPhoneLen = AMStrlen(szPhone);
	pAcnt->szPhoneNum = (AMChar *)AMMalloc(uiPhoneLen+1);
	AMAssert(0 != pAcnt->szPhoneNum);
	AMMemcpy(pAcnt->szPhoneNum, szPhone, uiPhoneLen);
	pAcnt->szPhoneNum[uiPhoneLen] = 0;
}
Пример #18
0
static AMInt32	_AIMAuth_getAuthImg(AMChar **pszSession, AMChar **pszImg, AMInt32 *piLen)
{
	AMInt32 iRetCode = eAIM_RESULT_OK, iImgLen = 0;
	AMChar *szSession = AMNULL, *szImgData = AMNULL;
	AMAssert(pszSession && pszImg && piLen);

	*pszSession = *pszImg = *piLen = 0;
	
	szSession = _genSession();
	if(szSession)
	{
		szImgData = _getCheckImg(szSession, &iImgLen);
		if(!szImgData || !iImgLen)
		{
			AMFree(szSession);
			iRetCode = eAIM_RESULT_NET;
		}
	}
	else
		iRetCode = eAIM_RESULT_MALLOC_ERROR;
	
	if(eAIM_RESULT_OK == iRetCode)
	{
		*pszSession = szSession;
		*pszImg = szImgData;
		*piLen = iImgLen;
	}

	return iRetCode;
}
Пример #19
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;
}
Пример #20
0
AMBool			IAccountModel_IsDirt(IAccountModel	*pAcntModel)
{
	AMAssert(0 != pAcntModel);
	if(0 != (pAcntModel->uiDirtFlag&0x01))
		return AMTRUE;
	return AMFALSE;
}
Пример #21
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;
}
Пример #22
0
AMVoid		AMTaskMgrReleaseTask(AMTaskMgr *taskMgr)
{
	_AMTaskMgr* _taskMgr = (_AMTaskMgr*)taskMgr;
	AMAssert(taskMgr);

	AMThreadMutexUnlock(&_taskMgr->mMutex);
}
Пример #23
0
static AMInt32 Adapter_OnIncomingSysMsg(IASessionModel *pSesModel, IAIMessage *pMsg, AMVoid *pvArg)
{

    IASession *pSysSes = AMNULL;
    AMAssert(0 != pSesModel && 0 != pMsg);

    IASessionModel_StoreMsg(pSesModel, pMsg, AMFALSE);

    if(eAIM_RESULT_OK != IAIMSessionModel_OpenSession(pSesModel, SYS_SES_NAME, (AMPVoid*)&pSysSes))
    {
        DPRINT("IASessionModel_OnIncomingSysMsg..................Error!\n");
        AMAssert(0);
    }

    return JavaMsgListener(pvArg, pSysSes, pMsg);
}
Пример #24
0
AIMAccount	*	IAccountModel_findHistoryAcnt(IAccountModel *pAcntModel, const AMChar *szAcntID)
{
	ListIter	*pItr = 0;
	AIMAccount	*pAcnt = 0;
	AMAssert(0 != pAcntModel && 0 != szAcntID);

	if(pAcntModel->listAcnt.size <= 0)
		return 0;

	pItr = create(ListIter, &pAcntModel->listAcnt);
	head(ListIter, pItr);
	do 
	{
		pAcnt = (AIMAccount *)retrieve(ListIter, pItr);
		if(0 == AMStrcmp(pAcnt->szID, szAcntID)//帐号相等
			|| (pAcnt->szPhoneNum && 0 == AMStrcmp(pAcnt->szPhoneNum, szAcntID + ID_HEAD_LEN)))//或者传进来的电话号码相等
		{
			destroy(ListIter, pItr);
			return pAcnt;
		}
	} while (!next(ListIter, pItr));
	destroy(ListIter, pItr);

	return 0;
}
Пример #25
0
AMTaskProc	AMTaskGetProc(AMTask *task)
{
	_AMTask	*pTask = (_AMTask *)task;
	AMAssert(pTask);

	return pTask->mProc;
}
Пример #26
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;
}
Пример #27
0
void CWangWangNetLib::Login(IWangWangNetCallback* pCallback, const std::string& dbPath, 
           const CWangWangEnviroment& wangwangEnviroment,
           const CLoginUserLoginInfo& loginUserLoginInfo)
{
    if(AMNULL == hIM)
	{
		Start(pCallback, dbPath);
	}
    
    AMAssert(hIM !=AMNULL);
  
    
    AIM_ACCOUNT_SETTING setting;
    //基本状态(0-在线,1-离线,2-隐身)
    setting.eDefaultPresence = (AIM_PRESENCE) loginUserLoginInfo.m_loginStatus.m_defaultPresence;
	setting.bSavePwd = 1;
	setting.bMute = 0;
	setting.bViberate = 0;
    
    AMBool bTest =AMFALSE;
    AMBool bNotPlain =AMFALSE;
    
    g_timestamp= loginUserLoginInfo.m_timestamp;
   
    IAIM_LoginEx(hIM, loginUserLoginInfo.m_loginStatus.m_strUid.c_str(), loginUserLoginInfo.m_password.m_strPassword.c_str(), bNotPlain, setting, bTest,ALIBABA_OM_VERSION);

}
Пример #28
0
AMPVoid		AMTaskGetArg(AMTask	*task)
{
	_AMTask	*pTask = (_AMTask *)task;
	AMAssert(pTask);

	return pTask->mProcArg;
}
Пример #29
0
AMChar	*	BuildSigXMLFromStruct(AIM_SIGNATURE *pSigStruct, const AMChar *szSig)//只是把5个sig造好,没有追加后面的loop/st/ci等设置
{
	AMChar	*	szResultXML = AMNULL;
	AMInt32		iLen = 0, iPos = 0, i=0;
	AMAssert(pSigStruct);
	iLen = sizeof(XML_SIG_TEMPHEAD) + sizeof(XML_SIG_TEMPTAIL) + 3*MAX_INT_NUMBER_LEN;

	iLen += szSig?AMStrlen(szSig):0 + 11;

	for(i=0; i< MAX_SIG_COUNT-1; i++)
		iLen += pSigStruct->szSignature[i]?AMStrlen(pSigStruct->szSignature[i]):0 + 11;//11 for "<Sig></Sig>"

	szResultXML = (AMChar*)AMMalloc(iLen);
	if(!szResultXML)
		return AMNULL;

	AMMemset(szResultXML, 0, iLen);

	AMMemcpy(szResultXML, HeadTag(XML_TAG_SIGOP), sizeof(HeadTag(XML_TAG_SIGOP))-1);

	AMStrcat(szResultXML, HeadTag(XML_TAG_SIG));
	if(szSig)
		AMStrcat(szResultXML, szSig);
	AMStrcat(szResultXML, TailTag(XML_TAG_SIG));
	
	for(i=0; i< MAX_SIG_COUNT-1; i++)
	{
		AMStrcat(szResultXML, HeadTag(XML_TAG_SIG));
		AMStrcat(szResultXML, pSigStruct->szSignature[i]);
		AMStrcat(szResultXML, TailTag(XML_TAG_SIG));
	}

	return szResultXML;
}
Пример #30
0
AMTask	*	AMTaskGetNext(AMTask *task)
{
	_AMTask	*pTask = (_AMTask *)task;
	AMAssert(pTask);

	return pTask->mNext;
}