in src/JNI/com/amazonaws/kinesis/video/producer/jni/Parameters.cpp [811:876]
BOOL setFragmentAck(JNIEnv* env, jobject fragmentAck, PFragmentAck pFragmentAck)
{
STATUS retStatus = STATUS_SUCCESS;
jmethodID methodId = NULL;
CHECK(env != NULL && fragmentAck != NULL && pFragmentAck != NULL);
// Load KinesisVideoFragmentAck
jclass cls = env->GetObjectClass(fragmentAck);
if (cls == NULL) {
DLOGE("Failed to create KinesisVideoFragmentAck class.");
CHK(FALSE, STATUS_INVALID_OPERATION);
}
// Retrieve the methods and call it
methodId = env->GetMethodID(cls, "getVersion", "()I");
if (methodId == NULL) {
DLOGW("Couldn't find method id getVersion");
} else {
pFragmentAck->version = env->CallIntMethod(fragmentAck, methodId);
CHK_JVM_EXCEPTION(env);
}
methodId = env->GetMethodID(cls, "getAckType", "()I");
if (methodId == NULL) {
DLOGW("Couldn't find method id getAckType");
} else {
pFragmentAck->ackType = (FRAGMENT_ACK_TYPE) env->CallIntMethod(fragmentAck, methodId);
CHK_JVM_EXCEPTION(env);
}
methodId = env->GetMethodID(cls, "getTimestamp", "()J");
if (methodId == NULL) {
DLOGW("Couldn't find method id getTimestamp");
} else {
pFragmentAck->timestamp = env->CallLongMethod(fragmentAck, methodId);
CHK_JVM_EXCEPTION(env);
}
methodId = env->GetMethodID(cls, "getSequenceNumber", "()Ljava/lang/String;");
if (methodId == NULL) {
DLOGW("Couldn't find method id getSequenceNumber");
} else {
jstring retString = (jstring) env->CallObjectMethod(fragmentAck, methodId);
CHK_JVM_EXCEPTION(env);
if (retString != NULL) {
const char* retChars = env->GetStringUTFChars(retString, NULL);
STRNCPY(pFragmentAck->sequenceNumber, retChars, MAX_FRAGMENT_SEQUENCE_NUMBER + 1);
pFragmentAck->sequenceNumber[MAX_FRAGMENT_SEQUENCE_NUMBER] = '\0';
env->ReleaseStringUTFChars(retString, retChars);
} else {
pFragmentAck->sequenceNumber[0] = '\0';
}
}
methodId = env->GetMethodID(cls, "getResult", "()I");
if (methodId == NULL) {
DLOGW("Couldn't find method id getResult");
} else {
pFragmentAck->result = (SERVICE_CALL_RESULT) env->CallIntMethod(fragmentAck, methodId);
CHK_JVM_EXCEPTION(env);
}
CleanUp:
return STATUS_FAILED(retStatus) ? FALSE : TRUE;
}