summaryrefslogtreecommitdiff
path: root/java/jni/com_zerotierone_sdk_Node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'java/jni/com_zerotierone_sdk_Node.cpp')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp20
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);