Browse Source

Added inject_sync_msg callback to every sessions, with static fallback for queue object initialized when initializin Sync session

JNI-44
Edouard Tisserant 9 years ago
parent
commit
4187a7155b
  1. 17
      src/org_pEp_jniadapter_AbstractEngine.cc

17
src/org_pEp_jniadapter_AbstractEngine.cc

@ -15,6 +15,10 @@ extern "C" {
using namespace pEp::JNIAdapter;
using namespace pEp::utility;
int inject_sync_msg(void *msg, void *arg);
static locked_queue< message * > *sync_queue = NULL;
JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_init(
JNIEnv *env,
jobject me
@ -43,6 +47,8 @@ extern "C" {
jlong _session = (jlong) session;
env->SetLongField(me, handle, _session);
register_sync_callbacks(session, NULL, NULL, NULL, inject_sync_msg, NULL);
}
JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_release(
@ -201,6 +207,13 @@ extern "C" {
int inject_sync_msg(void *msg, void *arg)
{
locked_queue< message * > *queue = (locked_queue< message * > *) arg;
if(queue == NULL)
queue = sync_queue;
if(queue == NULL)
return 1;
queue->push_back(message_dup((message*)msg));
return 0;
}
@ -270,6 +283,8 @@ extern "C" {
pthread_create(thread, NULL, sync_thread_routine, (void *) queue);
sync_queue = queue;
register_sync_callbacks(session,
(void *) queue,
message_to_send,
@ -311,6 +326,8 @@ extern "C" {
register_sync_callbacks(session, NULL, NULL, NULL, NULL, NULL);
sync_queue = NULL;
queue->push_front(NULL);
pthread_join(*thread, NULL);
free(thread);

Loading…
Cancel
Save