From 079d248eabac5f6b09f46ea174dd5fa362971a3c Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 2 May 2015 11:20:21 -0700 Subject: added a JniCache objectet for caching jclass, jmethodID, and jfieldID objects --- java/jni/com_zerotierone_sdk_Node.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'java/jni/com_zerotierone_sdk_Node.cpp') 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 @@ -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); -- cgit v1.2.3