Browse Source

introduce engine.startSync() and engine.stopSync()

JNI-88
Volker Birk 6 years ago
parent
commit
14ebadc786
  1. 3
      src/org/pEp/jniadapter/AbstractEngine.java
  2. 42
      src/org_pEp_jniadapter_AbstractEngine.cc
  3. 4
      test/Makefile
  4. 28
      test/Testing.java

3
src/org/pEp/jniadapter/AbstractEngine.java

@ -39,6 +39,9 @@ abstract class AbstractEngine implements AutoCloseable {
public native void startKeyserverLookup(); public native void startKeyserverLookup();
public native void stopKeyserverLookup(); public native void stopKeyserverLookup();
public native void startSync();
public native void stopSync();
public static byte[] toUTF8(String str) { public static byte[] toUTF8(String str) {
if (str == null) if (str == null)
return null; return null;

42
src/org_pEp_jniadapter_AbstractEngine.cc

@ -24,12 +24,6 @@ static struct _debug_log {
#include "throw_pEp_exception.hh" #include "throw_pEp_exception.hh"
#include "jniutils.hh" #include "jniutils.hh"
#ifdef ANDROID
#define ATTACH_CURRENT_THREAD(env, args) jvm->AttachCurrentThread(&env, args);
#else
#define ATTACH_CURRENT_THREAD(env, args) jvm->AttachCurrentThread((void **) &env, args);
#endif
namespace pEp { namespace pEp {
using namespace pEp::JNIAdapter; using namespace pEp::JNIAdapter;
using namespace pEp::Adapter; using namespace pEp::Adapter;
@ -61,8 +55,13 @@ namespace pEp {
{ {
JNIEnv *thread_env = nullptr; JNIEnv *thread_env = nullptr;
int status = jvm->GetEnv((void**)&thread_env, JNI_VERSION_1_6); int status = jvm->GetEnv((void**)&thread_env, JNI_VERSION_1_6);
if (status < 0) if (status < 0) {
status = ATTACH_CURRENT_THREAD(thread_env, nullptr); #ifdef ANDROID
status = jvm->AttachCurrentThread(&thread_env, nullptr);
#else
status = jvm->AttachCurrentThread((void **) &thread_env, nullptr);
#endif
}
assert(status >= 0); assert(status >= 0);
return thread_env; return thread_env;
} }
@ -188,18 +187,10 @@ extern "C" {
env->GetJavaVM(&jvm); env->GetJavaVM(&jvm);
jni_init(); jni_init();
obj = env->NewGlobalRef(me); obj = env->NewGlobalRef(me);
}
#ifdef DISABLE_SYNC
_messageToSend = messageToSend; _messageToSend = messageToSend;
session();
#else
if (first) {
debug_log << "######## starting sync\n";
startup<JNISync>(messageToSend, notifyHandshake, &o, &JNISync::startup_sync, &JNISync::shutdown_sync);
} }
#endif
first = false; first = false;
session();
} }
JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_release( JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_release(
@ -316,5 +307,22 @@ extern "C" {
free(thread); free(thread);
} }
JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_startSync(
JNIEnv *env,
jobject obj
)
{
debug_log << "######## starting sync\n";
startup<JNISync>(messageToSend, notifyHandshake, &o, &JNISync::startup_sync, &JNISync::shutdown_sync);
}
JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_stopSync(
JNIEnv *env,
jobject obj
)
{
shutdown();
}
} // extern "C" } // extern "C"

4
test/Makefile

@ -13,4 +13,6 @@ test: Testing.class SyncCallbacks.class
clean: clean:
rm -f *.class rm -f *.class
rm -f *.log rm -f *.log
rm -f *.pEp_* rm -f .pEp_*
rm -Rf .gnupg
rm -Rf .lldb

28
test/Testing.java

@ -114,17 +114,29 @@ class Testing {
ex.printStackTrace(); ex.printStackTrace();
} }
// try { e.startSync();
// Thread.sleep(1000);
// }
// catch (InterruptedException ex) {
//
// }
System.exit(0); // Keygen
} System.out.println("Generating keys: ");
Identity user2 = new Identity();
user2.user_id = "pEp_own_userId";
user2.me = true;
user2.username = "Test User 2";
user2.address = "jniTestUser2@peptest.ch";
user2 = e.myself(user2);
System.out.print("Keys generated: ");
System.out.println(user2.fpr);
// it's not necessary - you can just shutdown Sync and that's it
// but for this test give sync a chance to process all messages
try {
Thread.sleep(200);
}
catch (InterruptedException ex) { }
e.stopSync();
System.exit(0);
}
} }

Loading…
Cancel
Save