Exemple #1
0
/*
* Class:     com_alibaba_wireless_imservice_ChatSession
* Method:    nMarkMessageRead
* Signature: (IJ)V
*/
JNIEXPORT void JNICALL Java_com_alibaba_wireless_imservice_ChatSession_nMarkMessageRead
(JNIEnv *env, jclass cls, jint handle, jlong msgId)
{
	IASession *pSes = (IASession*)handle;
	if(AMNULL == pSes)
		return;

	IAIMSession_MarkMsgRead(pSes, msgId);
}
Exemple #2
0
//因为需要先MarkRead,所以i64MsgId也需要跟hSession一致
AIM_RESULT		AIMSession_RemoveMsg(AMHandle hSession, AMInt64 i64MsgId, AMBool bHasUnread)
{
	IASession *pSes = (IASession *)hSession;
	AMInt32	rcSqlite = 0;
	AMChar	*szSql = AMNULL;
	AMChar *szErrMsg = AMNULL;

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

	DPRINT("AIMSession_RemoveMsg\t\t\t Entering "I64FORMAT"\n", i64MsgId);
	
	if(bHasUnread)
		IAIMSession_MarkMsgRead(hSession, i64MsgId);

	if(i64MsgId<=0)
	{
		if(0 == AMStrcmp(pSes->szContactID, "systemSes"))//系统消息
		{
			szSql = sqlite3_mprintf(SQL_DELETE_SYS_MSG);
		}
		else//普通聊天消息
		{
			szSql = sqlite3_mprintf(SQL_DELETE_CNT_MSG, pSes->szContactID);
		}
	}
	else
	{
		szSql = sqlite3_mprintf(SQL_DELETE_MSG_ID, i64MsgId);
	}

	DPRINT("AIMSession_RemoveMsg\t\t\t SQL: %s\n", szSql);

	if(!szSql)
		return eAIM_RESULT_MALLOC_ERROR;

	rcSqlite = sqlite3_exec(pSes->pSesModel->pDB, szSql, 0, 0, &szErrMsg);

	sqlite3_free(szSql);

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

	return eAIM_RESULT_OK;
}