/* * 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); }
//因为需要先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; }