/* * Class: com_alibaba_wireless_imservice_ChatSession * Method: nGetUnreadHandle * Signature: (III)[I */ JNIEXPORT jintArray JNICALL Java_com_alibaba_wireless_imservice_ChatSession_nGetUnreadHandle (JNIEnv *env, jclass cls, jint handle, jint iOffset, jint iLimit) { IASession *pSes = (IASession*)handle; jintArray iaryMsgHandles = AMNULL; AMHandle *phMsgs = AMNULL; AMInt32 iCount = 0; AIM_RESULT eResult; if(0 == pSes) return AMNULL; if(eAIM_RESULT_OK != (eResult = AIMSession_GetMsgs(pSes, iOffset, iLimit, AMTRUE, &phMsgs, &iCount))) { DPRINT("nGetUnreadHandle..................Error %d!\n", eResult); return AMNULL; } if(0 == iCount) return AMNULL; if(AMNULL == (iaryMsgHandles = (*env)->NewIntArray(env, iCount))) { AIMSession_ReleaseMsgs(pSes, phMsgs, iCount, 0); return AMNULL; } (*env)->SetIntArrayRegion(env, iaryMsgHandles, 0, iCount, (const int *)phMsgs); AIMSession_ReleaseMsgs(pSes, phMsgs, iCount, 1); return iaryMsgHandles; }
AIM_RESULT IAIMSession_GetMsgs(AMHandle hSession, AMInt32 iOffset, AMInt32 iCount, AMHandle **pphMsgArray, AMInt32 *piCount) { if(iCount > 0) return AIMSession_GetMsgs(hSession, iOffset, iCount, AMFALSE, pphMsgArray, piCount); else { AMAssert(piCount); *piCount = 0; return eAIM_RESULT_PARAM_ERROR; } }
AIM_RESULT IAIMSession_GetUnreadMsgs( AMHandle hSession, AMInt32 iOffset, AMInt32 iCount, AMHandle **pphMsgArray, AMInt32 *piCount ) { return AIMSession_GetMsgs(hSession, iOffset, iCount, AMTRUE, pphMsgArray, piCount); }