Fix lost updates in Java example.
GitOrigin-RevId: 9081b015baed288ee7a901c89d4bdf4933aaf6d8
This commit is contained in:
parent
986962bf55
commit
6999ec4604
@ -42,10 +42,13 @@ static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jlong client_i
|
|||||||
jdouble timeout) {
|
jdouble timeout) {
|
||||||
auto client = get_client(client_id);
|
auto client = get_client(client_id);
|
||||||
jsize events_size = env->GetArrayLength(ids); // ids and events size must be of equal size
|
jsize events_size = env->GetArrayLength(ids); // ids and events size must be of equal size
|
||||||
|
if (events_size == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
jsize result_size = 0;
|
jsize result_size = 0;
|
||||||
|
|
||||||
auto response = client->receive(timeout);
|
auto response = client->receive(timeout);
|
||||||
while (response.object && result_size < events_size) {
|
while (response.object) {
|
||||||
jlong result_id = static_cast<jlong>(response.id);
|
jlong result_id = static_cast<jlong>(response.id);
|
||||||
env->SetLongArrayRegion(ids, result_size, 1, &result_id);
|
env->SetLongArrayRegion(ids, result_size, 1, &result_id);
|
||||||
|
|
||||||
@ -55,6 +58,10 @@ static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jlong client_i
|
|||||||
env->DeleteLocalRef(object);
|
env->DeleteLocalRef(object);
|
||||||
|
|
||||||
result_size++;
|
result_size++;
|
||||||
|
if (result_size == events_size) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
response = client->receive(0);
|
response = client->receive(0);
|
||||||
}
|
}
|
||||||
return result_size;
|
return result_size;
|
||||||
|
Reference in New Issue
Block a user