diff options
Diffstat (limited to 'java/jni/com_zerotierone_sdk_Node.cpp')
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 5462c864..3b5c00a0 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -27,6 +27,7 @@ #include "com_zerotierone_sdk_Node.h" #include "ZT1_jniutils.h" +#include "ZT1_jnicache.h" #include <ZeroTierOne.h> @@ -39,6 +40,9 @@ extern "C" { #endif +// global static JNI Cache Object +static JniCache cache; + namespace { struct JniRef { @@ -322,7 +326,7 @@ namespace { LOGD("Calling onDataStoreGet(%s, %p, %lu, %p)", objectName, buffer, bufferIndex, objectSizeObj); - long retval = env->CallLongMethod( + long retval = (long)env->CallLongMethod( ref->dataStoreGetListener, dataStoreGetCallbackMethod, nameStr, bufferObj, (jlong)bufferIndex, objectSizeObj); @@ -446,6 +450,18 @@ namespace { } } +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) +{ + cache.setJavaVM(vm); + return JNI_VERSION_1_6; +} + +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) +{ + cache.clearCache(); +} + + /* * Class: com_zerotierone_sdk_Node * Method: node_init @@ -905,7 +921,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_multicastSubscribe( uint64_t nwid = (uint64_t)in_nwid; uint64_t multicastGroup = (uint64_t)in_multicastGroup; - uint64_t multicastAdi = (uint64_t)in_multicastAdi; + unsigned long multicastAdi = (unsigned long)in_multicastAdi; ZT1_ResultCode rc = ZT1_Node_multicastSubscribe( node, nwid, multicastGroup, multicastAdi); |