Browse Source

ENGINE-133 added timeout parameter to retrieve_next_sync_msg

JNI-44
Edouard Tisserant 9 years ago
parent
commit
174fb003c2
  1. 23
      src/org_pEp_jniadapter_AbstractEngine.cc

23
src/org_pEp_jniadapter_AbstractEngine.cc

@ -208,7 +208,6 @@ extern "C" {
// Called by sync thread only
PEP_STATUS show_handshake(void *obj, pEp_identity *me, pEp_identity *partner)
{
LOGD("ShowHandshake");
jobject me_ = NULL;
jobject partner_ = NULL;
@ -223,7 +222,6 @@ extern "C" {
// Called by sync thread only
PEP_STATUS message_to_send(void *obj, message *msg)
{
LOGD("Message To Send");
jobject msg_ = NULL;
msg_ = sync_env->NewObject(messageClass, messageConstructorMethodID, (jlong) msg);
@ -245,15 +243,30 @@ extern "C" {
return 0;
}
void *retrieve_next_sync_msg(void *arg)
void *retrieve_next_sync_msg(void *arg, time_t *timeout)
{
locked_queue< sync_msg_t * > *queue = (locked_queue< sync_msg_t * > *) arg;
while (!queue->size())
time_t now, end;
void *msg;
if(*timeout == 0){
now = time(NULL);
end = now + *timeout;
}
while (!queue->size()){
// TODO: add blocking dequeue
usleep(100000);
void *msg = queue->front();
if(*timeout == 0){
now = time(NULL);
if(now > end)
return NULL;
}
}
msg = queue->front();
queue->pop_front();
return msg;
}

Loading…
Cancel
Save