summaryrefslogtreecommitdiff
path: root/java/jni/com_zerotierone_sdk_Node.cpp
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-05-02 11:20:21 -0700
committerGrant Limberg <glimberg@gmail.com>2015-05-02 12:05:02 -0700
commit079d248eabac5f6b09f46ea174dd5fa362971a3c (patch)
tree1d52b3fcbf8bfd47246d467d2fcac0f771e61f78 /java/jni/com_zerotierone_sdk_Node.cpp
parent9f2732d661439b7bf4fc4c5ddf352ad2de8182fd (diff)
downloadinfinitytier-079d248eabac5f6b09f46ea174dd5fa362971a3c.tar.gz
infinitytier-079d248eabac5f6b09f46ea174dd5fa362971a3c.zip
added a JniCache objectet for caching jclass, jmethodID, and jfieldID objects
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);