mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 20:13:44 +02:00
Rename JniCache to JniLookup
Removed caching capabilities as the cached methods, fields, and objects appears to be broken on Android
This commit is contained in:
parent
7e84f5a7db
commit
472206dfb2
7 changed files with 266 additions and 361 deletions
|
@ -54,7 +54,7 @@ set(src_files
|
||||||
../osdep/OSUtils.cpp
|
../osdep/OSUtils.cpp
|
||||||
jni/com_zerotierone_sdk_Node.cpp
|
jni/com_zerotierone_sdk_Node.cpp
|
||||||
jni/ZT1_jniutils.cpp
|
jni/ZT1_jniutils.cpp
|
||||||
jni/ZT1_jnicache.cpp
|
jni/ZT1_jnilookup.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(include_dirs
|
set(include_dirs
|
||||||
|
|
|
@ -39,6 +39,6 @@ LOCAL_SRC_FILES := \
|
||||||
LOCAL_SRC_FILES += \
|
LOCAL_SRC_FILES += \
|
||||||
com_zerotierone_sdk_Node.cpp \
|
com_zerotierone_sdk_Node.cpp \
|
||||||
ZT1_jniutils.cpp \
|
ZT1_jniutils.cpp \
|
||||||
ZT1_jnicache.cpp
|
ZT1_jnilookup.cpp
|
||||||
|
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -1,242 +0,0 @@
|
||||||
/*
|
|
||||||
* ZeroTier One - Network Virtualization Everywhere
|
|
||||||
* Copyright (C) 2011-2015 ZeroTier, Inc.
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* --
|
|
||||||
*
|
|
||||||
* ZeroTier may be used and distributed under the terms of the GPLv3, which
|
|
||||||
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
|
|
||||||
*
|
|
||||||
* If you would like to embed ZeroTier into a commercial application or
|
|
||||||
* redistribute it in a modified binary form, please contact ZeroTier Networks
|
|
||||||
* LLC. Start here: http://www.zerotier.com/
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ZT1_jnicache.h"
|
|
||||||
#include "ZT1_jniutils.h"
|
|
||||||
|
|
||||||
JniCache::JniCache()
|
|
||||||
: m_jvm(NULL)
|
|
||||||
, m_classes()
|
|
||||||
, m_fields()
|
|
||||||
, m_staticFields()
|
|
||||||
, m_methods()
|
|
||||||
, m_staticMethods()
|
|
||||||
{
|
|
||||||
LOGV("JNI Cache Created");
|
|
||||||
}
|
|
||||||
|
|
||||||
JniCache::JniCache(JavaVM *jvm)
|
|
||||||
: m_jvm(jvm)
|
|
||||||
, m_classes()
|
|
||||||
, m_fields()
|
|
||||||
, m_staticFields()
|
|
||||||
, m_methods()
|
|
||||||
, m_staticMethods()
|
|
||||||
{
|
|
||||||
LOGV("JNI Cache Created");
|
|
||||||
}
|
|
||||||
|
|
||||||
JniCache::~JniCache()
|
|
||||||
{
|
|
||||||
LOGV("JNI Cache Destroyed");
|
|
||||||
clearCache();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JniCache::clearCache()
|
|
||||||
{
|
|
||||||
if(m_jvm)
|
|
||||||
{
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for(ClassMap::iterator iter = m_classes.begin(), end = m_classes.end();
|
|
||||||
iter != end; ++iter)
|
|
||||||
{
|
|
||||||
env->DeleteGlobalRef(iter->second);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_classes.clear();
|
|
||||||
m_fields.clear();
|
|
||||||
m_staticFields.clear();
|
|
||||||
m_methods.clear();
|
|
||||||
m_staticMethods.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JniCache::setJavaVM(JavaVM *jvm)
|
|
||||||
{
|
|
||||||
LOGV("Assigned JVM to object");
|
|
||||||
m_jvm = jvm;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
jclass JniCache::findClass(const std::string &name)
|
|
||||||
{
|
|
||||||
if(!m_jvm)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
ClassMap::iterator found = m_classes.find(name);
|
|
||||||
|
|
||||||
if(found == m_classes.end())
|
|
||||||
{
|
|
||||||
// get the class from the JVM
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
{
|
|
||||||
LOGE("Error retreiving JNI Environment");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jclass localCls = env->FindClass(name.c_str());
|
|
||||||
if(env->ExceptionCheck())
|
|
||||||
{
|
|
||||||
LOGE("Error finding class: %s", name.c_str());
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jclass cls = (jclass)env->NewGlobalRef(localCls);
|
|
||||||
|
|
||||||
//m_classes.insert(std::make_pair(name, cls));
|
|
||||||
|
|
||||||
return cls;
|
|
||||||
}
|
|
||||||
|
|
||||||
LOGV("Returning cached %s", name.c_str());
|
|
||||||
return found->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
jmethodID JniCache::findMethod(jclass cls, const std::string &methodName, const std::string &methodSig)
|
|
||||||
{
|
|
||||||
if(!m_jvm)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
std::string id = methodName + methodSig;
|
|
||||||
|
|
||||||
MethodMap::iterator found = m_methods.find(id);
|
|
||||||
if(found == m_methods.end())
|
|
||||||
{
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jmethodID mid = env->GetMethodID(cls, methodName.c_str(), methodSig.c_str());
|
|
||||||
if(env->ExceptionCheck())
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//m_methods.insert(std::make_pair(id, mid));
|
|
||||||
|
|
||||||
return mid;
|
|
||||||
}
|
|
||||||
|
|
||||||
return found->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
jmethodID JniCache::findStaticMethod(jclass cls, const std::string &methodName, const std::string &methodSig)
|
|
||||||
{
|
|
||||||
if(!m_jvm)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
std::string id = methodName + methodSig;
|
|
||||||
|
|
||||||
MethodMap::iterator found = m_staticMethods.find(id);
|
|
||||||
if(found == m_staticMethods.end())
|
|
||||||
{
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jmethodID mid = env->GetStaticMethodID(cls, methodName.c_str(), methodSig.c_str());
|
|
||||||
if(env->ExceptionCheck())
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//m_staticMethods.insert(std::make_pair(id, mid));
|
|
||||||
|
|
||||||
return mid;
|
|
||||||
}
|
|
||||||
|
|
||||||
return found->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
jfieldID JniCache::findField(jclass cls, const std::string &fieldName, const std::string &typeStr)
|
|
||||||
{
|
|
||||||
if(!m_jvm)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
std::string id = fieldName + typeStr;
|
|
||||||
|
|
||||||
FieldMap::iterator found = m_fields.find(id);
|
|
||||||
if(found == m_fields.end())
|
|
||||||
{
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jfieldID fid = env->GetFieldID(cls, fieldName.c_str(), typeStr.c_str());
|
|
||||||
if(env->ExceptionCheck())
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//m_fields.insert(std::make_pair(id, fid));
|
|
||||||
|
|
||||||
return fid;
|
|
||||||
}
|
|
||||||
|
|
||||||
return found->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
jfieldID JniCache::findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr)
|
|
||||||
{
|
|
||||||
if(!m_jvm)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
std::string id = fieldName + typeStr;
|
|
||||||
|
|
||||||
FieldMap::iterator found = m_staticFields.find(id);
|
|
||||||
if(found == m_staticFields.end())
|
|
||||||
{
|
|
||||||
JNIEnv *env = NULL;
|
|
||||||
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
jfieldID fid = env->GetStaticFieldID(cls, fieldName.c_str(), typeStr.c_str());
|
|
||||||
if(env->ExceptionCheck())
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//m_staticFields.insert(std::make_pair(id, fid));
|
|
||||||
|
|
||||||
return fid;
|
|
||||||
}
|
|
||||||
|
|
||||||
return found->second;
|
|
||||||
}
|
|
158
java/jni/ZT1_jnilookup.cpp
Normal file
158
java/jni/ZT1_jnilookup.cpp
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
/*
|
||||||
|
* ZeroTier One - Network Virtualization Everywhere
|
||||||
|
* Copyright (C) 2011-2015 ZeroTier, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* --
|
||||||
|
*
|
||||||
|
* ZeroTier may be used and distributed under the terms of the GPLv3, which
|
||||||
|
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
*
|
||||||
|
* If you would like to embed ZeroTier into a commercial application or
|
||||||
|
* redistribute it in a modified binary form, please contact ZeroTier Networks
|
||||||
|
* LLC. Start here: http://www.zerotier.com/
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ZT1_jnilookup.h"
|
||||||
|
#include "ZT1_jniutils.h"
|
||||||
|
|
||||||
|
JniLookup::JniLookup()
|
||||||
|
: m_jvm(NULL)
|
||||||
|
{
|
||||||
|
LOGV("JNI Cache Created");
|
||||||
|
}
|
||||||
|
|
||||||
|
JniLookup::JniLookup(JavaVM *jvm)
|
||||||
|
: m_jvm(jvm)
|
||||||
|
{
|
||||||
|
LOGV("JNI Cache Created");
|
||||||
|
}
|
||||||
|
|
||||||
|
JniLookup::~JniLookup()
|
||||||
|
{
|
||||||
|
LOGV("JNI Cache Destroyed");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void JniLookup::setJavaVM(JavaVM *jvm)
|
||||||
|
{
|
||||||
|
LOGV("Assigned JVM to object");
|
||||||
|
m_jvm = jvm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
jclass JniLookup::findClass(const std::string &name)
|
||||||
|
{
|
||||||
|
if(!m_jvm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
// get the class from the JVM
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||||
|
{
|
||||||
|
LOGE("Error retreiving JNI Environment");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
jclass cls = env->FindClass(name.c_str());
|
||||||
|
if(env->ExceptionCheck())
|
||||||
|
{
|
||||||
|
LOGE("Error finding class: %s", name.c_str());
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cls;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
jmethodID JniLookup::findMethod(jclass cls, const std::string &methodName, const std::string &methodSig)
|
||||||
|
{
|
||||||
|
if(!m_jvm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
jmethodID mid = env->GetMethodID(cls, methodName.c_str(), methodSig.c_str());
|
||||||
|
if(env->ExceptionCheck())
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
|
||||||
|
jmethodID JniLookup::findStaticMethod(jclass cls, const std::string &methodName, const std::string &methodSig)
|
||||||
|
{
|
||||||
|
if(!m_jvm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
jmethodID mid = env->GetStaticMethodID(cls, methodName.c_str(), methodSig.c_str());
|
||||||
|
if(env->ExceptionCheck())
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
|
||||||
|
jfieldID JniLookup::findField(jclass cls, const std::string &fieldName, const std::string &typeStr)
|
||||||
|
{
|
||||||
|
if(!m_jvm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
jfieldID fid = env->GetFieldID(cls, fieldName.c_str(), typeStr.c_str());
|
||||||
|
if(env->ExceptionCheck())
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fid;
|
||||||
|
}
|
||||||
|
|
||||||
|
jfieldID JniLookup::findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr)
|
||||||
|
{
|
||||||
|
if(!m_jvm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
jfieldID fid = env->GetStaticFieldID(cls, fieldName.c_str(), typeStr.c_str());
|
||||||
|
if(env->ExceptionCheck())
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fid;
|
||||||
|
}
|
|
@ -25,8 +25,8 @@
|
||||||
* LLC. Start here: http://www.zerotier.com/
|
* LLC. Start here: http://www.zerotier.com/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ZT1_JNICACHE_H_
|
#ifndef ZT1_JNILOOKUP_H_
|
||||||
#define ZT1_JNICACHE_H_
|
#define ZT1_JNILOOKUP_H_
|
||||||
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
@ -34,14 +34,13 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class JniCache {
|
class JniLookup {
|
||||||
public:
|
public:
|
||||||
JniCache();
|
JniLookup();
|
||||||
JniCache(JavaVM *jvm);
|
JniLookup(JavaVM *jvm);
|
||||||
~JniCache();
|
~JniLookup();
|
||||||
|
|
||||||
void setJavaVM(JavaVM *jvm);
|
void setJavaVM(JavaVM *jvm);
|
||||||
void clearCache();
|
|
||||||
|
|
||||||
jclass findClass(const std::string &name);
|
jclass findClass(const std::string &name);
|
||||||
jmethodID findMethod(jclass cls, const std::string &methodName, const std::string &methodSig);
|
jmethodID findMethod(jclass cls, const std::string &methodName, const std::string &methodSig);
|
||||||
|
@ -49,17 +48,7 @@ public:
|
||||||
jfieldID findField(jclass cls, const std::string &fieldName, const std::string &typeStr);
|
jfieldID findField(jclass cls, const std::string &fieldName, const std::string &typeStr);
|
||||||
jfieldID findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr);
|
jfieldID findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr);
|
||||||
private:
|
private:
|
||||||
typedef std::map<std::string, jmethodID> MethodMap;
|
|
||||||
typedef std::map<std::string, jfieldID> FieldMap;
|
|
||||||
typedef std::map<std::string, jclass> ClassMap;
|
|
||||||
|
|
||||||
JavaVM *m_jvm;
|
JavaVM *m_jvm;
|
||||||
ClassMap m_classes;
|
|
||||||
FieldMap m_fields;
|
|
||||||
FieldMap m_staticFields;
|
|
||||||
MethodMap m_methods;
|
|
||||||
MethodMap m_staticMethods;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1,9 +1,9 @@
|
||||||
#include "ZT1_jniutils.h"
|
#include "ZT1_jniutils.h"
|
||||||
#include "ZT1_jnicache.h"
|
#include "ZT1_jnilookup.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
extern JniCache cache;
|
extern JniLookup lookup;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -15,7 +15,7 @@ jobject createResultObject(JNIEnv *env, ZT1_ResultCode code)
|
||||||
|
|
||||||
jobject resultObject = NULL;
|
jobject resultObject = NULL;
|
||||||
|
|
||||||
resultClass = cache.findClass("com/zerotier/sdk/ResultCode");
|
resultClass = lookup.findClass("com/zerotier/sdk/ResultCode");
|
||||||
if(resultClass == NULL)
|
if(resultClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Couldnt find ResultCode class");
|
LOGE("Couldnt find ResultCode class");
|
||||||
|
@ -48,7 +48,7 @@ jobject createResultObject(JNIEnv *env, ZT1_ResultCode code)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;");
|
jfieldID enumField = lookup.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;");
|
||||||
if(env->ExceptionCheck() || enumField == NULL)
|
if(env->ExceptionCheck() || enumField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error on FindStaticField");
|
LOGE("Error on FindStaticField");
|
||||||
|
@ -68,7 +68,7 @@ jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status)
|
||||||
{
|
{
|
||||||
jobject statusObject = NULL;
|
jobject statusObject = NULL;
|
||||||
|
|
||||||
jclass statusClass = cache.findClass("com/zerotier/sdk/VirtualNetworkStatus");
|
jclass statusClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkStatus");
|
||||||
if(statusClass == NULL)
|
if(statusClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL; // exception thrown
|
return NULL; // exception thrown
|
||||||
|
@ -97,7 +97,7 @@ jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(statusClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkStatus;");
|
jfieldID enumField = lookup.findStaticField(statusClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkStatus;");
|
||||||
|
|
||||||
statusObject = env->GetStaticObjectField(statusClass, enumField);
|
statusObject = env->GetStaticObjectField(statusClass, enumField);
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ jobject createEvent(JNIEnv *env, ZT1_Event event)
|
||||||
jclass eventClass = NULL;
|
jclass eventClass = NULL;
|
||||||
jobject eventObject = NULL;
|
jobject eventObject = NULL;
|
||||||
|
|
||||||
eventClass = cache.findClass("com/zerotier/sdk/Event");
|
eventClass = lookup.findClass("com/zerotier/sdk/Event");
|
||||||
if(eventClass == NULL)
|
if(eventClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -147,7 +147,7 @@ jobject createEvent(JNIEnv *env, ZT1_Event event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;");
|
jfieldID enumField = lookup.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;");
|
||||||
|
|
||||||
eventObject = env->GetStaticObjectField(eventClass, enumField);
|
eventObject = env->GetStaticObjectField(eventClass, enumField);
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ jobject createPeerRole(JNIEnv *env, ZT1_PeerRole role)
|
||||||
jclass peerRoleClass = NULL;
|
jclass peerRoleClass = NULL;
|
||||||
jobject peerRoleObject = NULL;
|
jobject peerRoleObject = NULL;
|
||||||
|
|
||||||
peerRoleClass = cache.findClass("com/zerotier/sdk/PeerRole");
|
peerRoleClass = lookup.findClass("com/zerotier/sdk/PeerRole");
|
||||||
if(peerRoleClass == NULL)
|
if(peerRoleClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -179,7 +179,7 @@ jobject createPeerRole(JNIEnv *env, ZT1_PeerRole role)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(peerRoleClass, fieldName.c_str(), "Lcom/zerotier/sdk/PeerRole;");
|
jfieldID enumField = lookup.findStaticField(peerRoleClass, fieldName.c_str(), "Lcom/zerotier/sdk/PeerRole;");
|
||||||
|
|
||||||
peerRoleObject = env->GetStaticObjectField(peerRoleClass, enumField);
|
peerRoleObject = env->GetStaticObjectField(peerRoleClass, enumField);
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ jobject createVirtualNetworkType(JNIEnv *env, ZT1_VirtualNetworkType type)
|
||||||
jclass vntypeClass = NULL;
|
jclass vntypeClass = NULL;
|
||||||
jobject vntypeObject = NULL;
|
jobject vntypeObject = NULL;
|
||||||
|
|
||||||
vntypeClass = cache.findClass("com/zerotier/sdk/VirtualNetworkType");
|
vntypeClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkType");
|
||||||
if(env->ExceptionCheck() || vntypeClass == NULL)
|
if(env->ExceptionCheck() || vntypeClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -208,7 +208,7 @@ jobject createVirtualNetworkType(JNIEnv *env, ZT1_VirtualNetworkType type)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(vntypeClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkType;");
|
jfieldID enumField = lookup.findStaticField(vntypeClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkType;");
|
||||||
vntypeObject = env->GetStaticObjectField(vntypeClass, enumField);
|
vntypeObject = env->GetStaticObjectField(vntypeClass, enumField);
|
||||||
return vntypeObject;
|
return vntypeObject;
|
||||||
}
|
}
|
||||||
|
@ -218,7 +218,7 @@ jobject createVirtualNetworkConfigOperation(JNIEnv *env, ZT1_VirtualNetworkConfi
|
||||||
jclass vnetConfigOpClass = NULL;
|
jclass vnetConfigOpClass = NULL;
|
||||||
jobject vnetConfigOpObject = NULL;
|
jobject vnetConfigOpObject = NULL;
|
||||||
|
|
||||||
vnetConfigOpClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfigOperation");
|
vnetConfigOpClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfigOperation");
|
||||||
if(env->ExceptionCheck() || vnetConfigOpClass == NULL)
|
if(env->ExceptionCheck() || vnetConfigOpClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -241,7 +241,7 @@ jobject createVirtualNetworkConfigOperation(JNIEnv *env, ZT1_VirtualNetworkConfi
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = cache.findStaticField(vnetConfigOpClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;");
|
jfieldID enumField = lookup.findStaticField(vnetConfigOpClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;");
|
||||||
vnetConfigOpObject = env->GetStaticObjectField(vnetConfigOpClass, enumField);
|
vnetConfigOpObject = env->GetStaticObjectField(vnetConfigOpClass, enumField);
|
||||||
return vnetConfigOpObject;
|
return vnetConfigOpObject;
|
||||||
}
|
}
|
||||||
|
@ -252,14 +252,14 @@ jobject newInetAddress(JNIEnv *env, const sockaddr_storage &addr)
|
||||||
jclass inetAddressClass = NULL;
|
jclass inetAddressClass = NULL;
|
||||||
jmethodID inetAddress_getByAddress = NULL;
|
jmethodID inetAddress_getByAddress = NULL;
|
||||||
|
|
||||||
inetAddressClass = cache.findClass("java/net/InetAddress");
|
inetAddressClass = lookup.findClass("java/net/InetAddress");
|
||||||
if(env->ExceptionCheck() || inetAddressClass == NULL)
|
if(env->ExceptionCheck() || inetAddressClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding InetAddress class");
|
LOGE("Error finding InetAddress class");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
inetAddress_getByAddress = cache.findStaticMethod(
|
inetAddress_getByAddress = lookup.findStaticMethod(
|
||||||
inetAddressClass, "getByAddress", "([B)Ljava/net/InetAddress;");
|
inetAddressClass, "getByAddress", "([B)Ljava/net/InetAddress;");
|
||||||
if(env->ExceptionCheck() || inetAddress_getByAddress == NULL)
|
if(env->ExceptionCheck() || inetAddress_getByAddress == NULL)
|
||||||
{
|
{
|
||||||
|
@ -315,7 +315,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
|
||||||
jclass inetSocketAddressClass = NULL;
|
jclass inetSocketAddressClass = NULL;
|
||||||
jmethodID inetSocketAddress_constructor = NULL;
|
jmethodID inetSocketAddress_constructor = NULL;
|
||||||
|
|
||||||
inetSocketAddressClass = cache.findClass("java/net/InetSocketAddress");
|
inetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress");
|
||||||
if(env->ExceptionCheck() || inetSocketAddressClass == NULL)
|
if(env->ExceptionCheck() || inetSocketAddressClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding InetSocketAddress Class");
|
LOGE("Error finding InetSocketAddress Class");
|
||||||
|
@ -330,7 +330,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
inetSocketAddress_constructor = cache.findMethod(
|
inetSocketAddress_constructor = lookup.findMethod(
|
||||||
inetSocketAddressClass, "<init>", "(Ljava/net/InetAddress;I)V");
|
inetSocketAddressClass, "<init>", "(Ljava/net/InetAddress;I)V");
|
||||||
if(env->ExceptionCheck() || inetSocketAddress_constructor == NULL)
|
if(env->ExceptionCheck() || inetSocketAddress_constructor == NULL)
|
||||||
{
|
{
|
||||||
|
@ -380,13 +380,13 @@ jobject newMulticastGroup(JNIEnv *env, const ZT1_MulticastGroup &mc)
|
||||||
jfieldID macField = NULL;
|
jfieldID macField = NULL;
|
||||||
jfieldID adiField = NULL;
|
jfieldID adiField = NULL;
|
||||||
|
|
||||||
multicastGroupClass = cache.findClass("com/zerotier/sdk/MulticastGroup");
|
multicastGroupClass = lookup.findClass("com/zerotier/sdk/MulticastGroup");
|
||||||
if(env->ExceptionCheck() || multicastGroupClass == NULL)
|
if(env->ExceptionCheck() || multicastGroupClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
multicastGroup_constructor = cache.findMethod(
|
multicastGroup_constructor = lookup.findMethod(
|
||||||
multicastGroupClass, "<init>", "()V");
|
multicastGroupClass, "<init>", "()V");
|
||||||
if(env->ExceptionCheck() || multicastGroup_constructor == NULL)
|
if(env->ExceptionCheck() || multicastGroup_constructor == NULL)
|
||||||
{
|
{
|
||||||
|
@ -399,13 +399,13 @@ jobject newMulticastGroup(JNIEnv *env, const ZT1_MulticastGroup &mc)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
macField = cache.findField(multicastGroupClass, "mac", "J");
|
macField = lookup.findField(multicastGroupClass, "mac", "J");
|
||||||
if(env->ExceptionCheck() || macField == NULL)
|
if(env->ExceptionCheck() || macField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
adiField = cache.findField(multicastGroupClass, "adi", "J");
|
adiField = lookup.findField(multicastGroupClass, "adi", "J");
|
||||||
if(env->ExceptionCheck() || adiField == NULL)
|
if(env->ExceptionCheck() || adiField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -431,56 +431,56 @@ jobject newPeerPhysicalPath(JNIEnv *env, const ZT1_PeerPhysicalPath &ppp)
|
||||||
|
|
||||||
jmethodID ppp_constructor = NULL;
|
jmethodID ppp_constructor = NULL;
|
||||||
|
|
||||||
pppClass = cache.findClass("com/zerotier/sdk/PeerPhysicalPath");
|
pppClass = lookup.findClass("com/zerotier/sdk/PeerPhysicalPath");
|
||||||
if(env->ExceptionCheck() || pppClass == NULL)
|
if(env->ExceptionCheck() || pppClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding PeerPhysicalPath class");
|
LOGE("Error finding PeerPhysicalPath class");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
addressField = cache.findField(pppClass, "address", "Ljava/net/InetSocketAddress;");
|
addressField = lookup.findField(pppClass, "address", "Ljava/net/InetSocketAddress;");
|
||||||
if(env->ExceptionCheck() || addressField == NULL)
|
if(env->ExceptionCheck() || addressField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding address field");
|
LOGE("Error finding address field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastSendField = cache.findField(pppClass, "lastSend", "J");
|
lastSendField = lookup.findField(pppClass, "lastSend", "J");
|
||||||
if(env->ExceptionCheck() || lastSendField == NULL)
|
if(env->ExceptionCheck() || lastSendField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding lastSend field");
|
LOGE("Error finding lastSend field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastReceiveField = cache.findField(pppClass, "lastReceive", "J");
|
lastReceiveField = lookup.findField(pppClass, "lastReceive", "J");
|
||||||
if(env->ExceptionCheck() || lastReceiveField == NULL)
|
if(env->ExceptionCheck() || lastReceiveField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding lastReceive field");
|
LOGE("Error finding lastReceive field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fixedField = cache.findField(pppClass, "fixed", "Z");
|
fixedField = lookup.findField(pppClass, "fixed", "Z");
|
||||||
if(env->ExceptionCheck() || fixedField == NULL)
|
if(env->ExceptionCheck() || fixedField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding fixed field");
|
LOGE("Error finding fixed field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
activeField = cache.findField(pppClass, "active", "Z");
|
activeField = lookup.findField(pppClass, "active", "Z");
|
||||||
if(env->ExceptionCheck() || activeField == NULL)
|
if(env->ExceptionCheck() || activeField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding active field");
|
LOGE("Error finding active field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
preferredField = cache.findField(pppClass, "preferred", "Z");
|
preferredField = lookup.findField(pppClass, "preferred", "Z");
|
||||||
if(env->ExceptionCheck() || preferredField == NULL)
|
if(env->ExceptionCheck() || preferredField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding preferred field");
|
LOGE("Error finding preferred field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ppp_constructor = cache.findMethod(pppClass, "<init>", "()V");
|
ppp_constructor = lookup.findMethod(pppClass, "<init>", "()V");
|
||||||
if(env->ExceptionCheck() || ppp_constructor == NULL)
|
if(env->ExceptionCheck() || ppp_constructor == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding PeerPhysicalPath constructor");
|
LOGE("Error finding PeerPhysicalPath constructor");
|
||||||
|
@ -532,77 +532,77 @@ jobject newPeer(JNIEnv *env, const ZT1_Peer &peer)
|
||||||
|
|
||||||
jmethodID peer_constructor = NULL;
|
jmethodID peer_constructor = NULL;
|
||||||
|
|
||||||
peerClass = cache.findClass("com/zerotier/sdk/Peer");
|
peerClass = lookup.findClass("com/zerotier/sdk/Peer");
|
||||||
if(env->ExceptionCheck() || peerClass == NULL)
|
if(env->ExceptionCheck() || peerClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding Peer class");
|
LOGE("Error finding Peer class");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
addressField = cache.findField(peerClass, "address", "J");
|
addressField = lookup.findField(peerClass, "address", "J");
|
||||||
if(env->ExceptionCheck() || addressField == NULL)
|
if(env->ExceptionCheck() || addressField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding address field of Peer object");
|
LOGE("Error finding address field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastUnicastFrameField = cache.findField(peerClass, "lastUnicastFrame", "J");
|
lastUnicastFrameField = lookup.findField(peerClass, "lastUnicastFrame", "J");
|
||||||
if(env->ExceptionCheck() || lastUnicastFrameField == NULL)
|
if(env->ExceptionCheck() || lastUnicastFrameField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding lastUnicastFrame field of Peer object");
|
LOGE("Error finding lastUnicastFrame field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastMulticastFrameField = cache.findField(peerClass, "lastMulticastFrame", "J");
|
lastMulticastFrameField = lookup.findField(peerClass, "lastMulticastFrame", "J");
|
||||||
if(env->ExceptionCheck() || lastMulticastFrameField == NULL)
|
if(env->ExceptionCheck() || lastMulticastFrameField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding lastMulticastFrame field of Peer object");
|
LOGE("Error finding lastMulticastFrame field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
versionMajorField = cache.findField(peerClass, "versionMajor", "I");
|
versionMajorField = lookup.findField(peerClass, "versionMajor", "I");
|
||||||
if(env->ExceptionCheck() || versionMajorField == NULL)
|
if(env->ExceptionCheck() || versionMajorField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding versionMajor field of Peer object");
|
LOGE("Error finding versionMajor field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
versionMinorField = cache.findField(peerClass, "versionMinor", "I");
|
versionMinorField = lookup.findField(peerClass, "versionMinor", "I");
|
||||||
if(env->ExceptionCheck() || versionMinorField == NULL)
|
if(env->ExceptionCheck() || versionMinorField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding versionMinor field of Peer object");
|
LOGE("Error finding versionMinor field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
versionRevField = cache.findField(peerClass, "versionRev", "I");
|
versionRevField = lookup.findField(peerClass, "versionRev", "I");
|
||||||
if(env->ExceptionCheck() || versionRevField == NULL)
|
if(env->ExceptionCheck() || versionRevField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding versionRev field of Peer object");
|
LOGE("Error finding versionRev field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
latencyField = cache.findField(peerClass, "latency", "I");
|
latencyField = lookup.findField(peerClass, "latency", "I");
|
||||||
if(env->ExceptionCheck() || latencyField == NULL)
|
if(env->ExceptionCheck() || latencyField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding latency field of Peer object");
|
LOGE("Error finding latency field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
roleField = cache.findField(peerClass, "role", "Lcom/zerotier/sdk/PeerRole;");
|
roleField = lookup.findField(peerClass, "role", "Lcom/zerotier/sdk/PeerRole;");
|
||||||
if(env->ExceptionCheck() || roleField == NULL)
|
if(env->ExceptionCheck() || roleField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding role field of Peer object");
|
LOGE("Error finding role field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pathsField = cache.findField(peerClass, "paths", "[Lcom/zerotier/sdk/PeerPhysicalPath;");
|
pathsField = lookup.findField(peerClass, "paths", "[Lcom/zerotier/sdk/PeerPhysicalPath;");
|
||||||
if(env->ExceptionCheck() || pathsField == NULL)
|
if(env->ExceptionCheck() || pathsField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding paths field of Peer object");
|
LOGE("Error finding paths field of Peer object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
peer_constructor = cache.findMethod(peerClass, "<init>", "()V");
|
peer_constructor = lookup.findMethod(peerClass, "<init>", "()V");
|
||||||
if(env->ExceptionCheck() || peer_constructor == NULL)
|
if(env->ExceptionCheck() || peer_constructor == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding Peer constructor");
|
LOGE("Error finding Peer constructor");
|
||||||
|
@ -625,7 +625,7 @@ jobject newPeer(JNIEnv *env, const ZT1_Peer &peer)
|
||||||
env->SetIntField(peerObject, latencyField, peer.latency);
|
env->SetIntField(peerObject, latencyField, peer.latency);
|
||||||
env->SetObjectField(peerObject, roleField, createPeerRole(env, peer.role));
|
env->SetObjectField(peerObject, roleField, createPeerRole(env, peer.role));
|
||||||
|
|
||||||
jclass peerPhysicalPathClass = cache.findClass("com/zerotier/sdk/PeerPhysicalPath");
|
jclass peerPhysicalPathClass = lookup.findClass("com/zerotier/sdk/PeerPhysicalPath");
|
||||||
if(env->ExceptionCheck() || peerPhysicalPathClass == NULL)
|
if(env->ExceptionCheck() || peerPhysicalPathClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding PeerPhysicalPath class");
|
LOGE("Error finding PeerPhysicalPath class");
|
||||||
|
@ -675,14 +675,14 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig
|
||||||
jfieldID multicastSubscriptionsField = NULL;
|
jfieldID multicastSubscriptionsField = NULL;
|
||||||
jfieldID assignedAddressesField = NULL;
|
jfieldID assignedAddressesField = NULL;
|
||||||
|
|
||||||
vnetConfigClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfig");
|
vnetConfigClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfig");
|
||||||
if(vnetConfigClass == NULL)
|
if(vnetConfigClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Couldn't find com.zerotier.sdk.VirtualNetworkConfig");
|
LOGE("Couldn't find com.zerotier.sdk.VirtualNetworkConfig");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vnetConfig_constructor = cache.findMethod(
|
vnetConfig_constructor = lookup.findMethod(
|
||||||
vnetConfigClass, "<init>", "()V");
|
vnetConfigClass, "<init>", "()V");
|
||||||
if(env->ExceptionCheck() || vnetConfig_constructor == NULL)
|
if(env->ExceptionCheck() || vnetConfig_constructor == NULL)
|
||||||
{
|
{
|
||||||
|
@ -697,98 +697,98 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nwidField = cache.findField(vnetConfigClass, "nwid", "J");
|
nwidField = lookup.findField(vnetConfigClass, "nwid", "J");
|
||||||
if(env->ExceptionCheck() || nwidField == NULL)
|
if(env->ExceptionCheck() || nwidField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting nwid field");
|
LOGE("Error getting nwid field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
macField = cache.findField(vnetConfigClass, "mac", "J");
|
macField = lookup.findField(vnetConfigClass, "mac", "J");
|
||||||
if(env->ExceptionCheck() || macField == NULL)
|
if(env->ExceptionCheck() || macField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting mac field");
|
LOGE("Error getting mac field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nameField = cache.findField(vnetConfigClass, "name", "Ljava/lang/String;");
|
nameField = lookup.findField(vnetConfigClass, "name", "Ljava/lang/String;");
|
||||||
if(env->ExceptionCheck() || nameField == NULL)
|
if(env->ExceptionCheck() || nameField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting name field");
|
LOGE("Error getting name field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
statusField = cache.findField(vnetConfigClass, "status", "Lcom/zerotier/sdk/VirtualNetworkStatus;");
|
statusField = lookup.findField(vnetConfigClass, "status", "Lcom/zerotier/sdk/VirtualNetworkStatus;");
|
||||||
if(env->ExceptionCheck() || statusField == NULL)
|
if(env->ExceptionCheck() || statusField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting status field");
|
LOGE("Error getting status field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
typeField = cache.findField(vnetConfigClass, "type", "Lcom/zerotier/sdk/VirtualNetworkType;");
|
typeField = lookup.findField(vnetConfigClass, "type", "Lcom/zerotier/sdk/VirtualNetworkType;");
|
||||||
if(env->ExceptionCheck() || typeField == NULL)
|
if(env->ExceptionCheck() || typeField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting type field");
|
LOGE("Error getting type field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mtuField = cache.findField(vnetConfigClass, "mtu", "I");
|
mtuField = lookup.findField(vnetConfigClass, "mtu", "I");
|
||||||
if(env->ExceptionCheck() || mtuField == NULL)
|
if(env->ExceptionCheck() || mtuField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting mtu field");
|
LOGE("Error getting mtu field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
dhcpField = cache.findField(vnetConfigClass, "dhcp", "Z");
|
dhcpField = lookup.findField(vnetConfigClass, "dhcp", "Z");
|
||||||
if(env->ExceptionCheck() || dhcpField == NULL)
|
if(env->ExceptionCheck() || dhcpField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting dhcp field");
|
LOGE("Error getting dhcp field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bridgeField = cache.findField(vnetConfigClass, "bridge", "Z");
|
bridgeField = lookup.findField(vnetConfigClass, "bridge", "Z");
|
||||||
if(env->ExceptionCheck() || bridgeField == NULL)
|
if(env->ExceptionCheck() || bridgeField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting bridge field");
|
LOGE("Error getting bridge field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastEnabledField = cache.findField(vnetConfigClass, "broadcastEnabled", "Z");
|
broadcastEnabledField = lookup.findField(vnetConfigClass, "broadcastEnabled", "Z");
|
||||||
if(env->ExceptionCheck() || broadcastEnabledField == NULL)
|
if(env->ExceptionCheck() || broadcastEnabledField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting broadcastEnabled field");
|
LOGE("Error getting broadcastEnabled field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
portErrorField = cache.findField(vnetConfigClass, "portError", "I");
|
portErrorField = lookup.findField(vnetConfigClass, "portError", "I");
|
||||||
if(env->ExceptionCheck() || portErrorField == NULL)
|
if(env->ExceptionCheck() || portErrorField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting portError field");
|
LOGE("Error getting portError field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
enabledField = cache.findField(vnetConfigClass, "enabled", "Z");
|
enabledField = lookup.findField(vnetConfigClass, "enabled", "Z");
|
||||||
if(env->ExceptionCheck() || enabledField == NULL)
|
if(env->ExceptionCheck() || enabledField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting enabled field");
|
LOGE("Error getting enabled field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
netconfRevisionField = cache.findField(vnetConfigClass, "netconfRevision", "J");
|
netconfRevisionField = lookup.findField(vnetConfigClass, "netconfRevision", "J");
|
||||||
if(env->ExceptionCheck() || netconfRevisionField == NULL)
|
if(env->ExceptionCheck() || netconfRevisionField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting netconfRevision field");
|
LOGE("Error getting netconfRevision field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
multicastSubscriptionsField = cache.findField(vnetConfigClass, "multicastSubscriptions", "[Lcom/zerotier/sdk/MulticastGroup;");
|
multicastSubscriptionsField = lookup.findField(vnetConfigClass, "multicastSubscriptions", "[Lcom/zerotier/sdk/MulticastGroup;");
|
||||||
if(env->ExceptionCheck() || multicastSubscriptionsField == NULL)
|
if(env->ExceptionCheck() || multicastSubscriptionsField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting multicastSubscriptions field");
|
LOGE("Error getting multicastSubscriptions field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
assignedAddressesField = cache.findField(vnetConfigClass, "assignedAddresses", "[Ljava/net/InetSocketAddress;");
|
assignedAddressesField = lookup.findField(vnetConfigClass, "assignedAddresses", "[Ljava/net/InetSocketAddress;");
|
||||||
if(env->ExceptionCheck() || assignedAddressesField == NULL)
|
if(env->ExceptionCheck() || assignedAddressesField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error getting assignedAddresses field");
|
LOGE("Error getting assignedAddresses field");
|
||||||
|
@ -825,7 +825,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig
|
||||||
env->SetBooleanField(vnetConfigObj, enabledField, vnetConfig.enabled);
|
env->SetBooleanField(vnetConfigObj, enabledField, vnetConfig.enabled);
|
||||||
env->SetIntField(vnetConfigObj, portErrorField, vnetConfig.portError);
|
env->SetIntField(vnetConfigObj, portErrorField, vnetConfig.portError);
|
||||||
|
|
||||||
jclass multicastGroupClass = cache.findClass("com/zerotier/sdk/MulticastGroup");
|
jclass multicastGroupClass = lookup.findClass("com/zerotier/sdk/MulticastGroup");
|
||||||
if(env->ExceptionCheck() || multicastGroupClass == NULL)
|
if(env->ExceptionCheck() || multicastGroupClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding MulticastGroup class");
|
LOGE("Error finding MulticastGroup class");
|
||||||
|
@ -850,7 +850,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig
|
||||||
}
|
}
|
||||||
env->SetObjectField(vnetConfigObj, multicastSubscriptionsField, mcastSubsArrayObj);
|
env->SetObjectField(vnetConfigObj, multicastSubscriptionsField, mcastSubsArrayObj);
|
||||||
|
|
||||||
jclass inetSocketAddressClass = cache.findClass("java/net/InetSocketAddress");
|
jclass inetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress");
|
||||||
if(env->ExceptionCheck() || inetSocketAddressClass == NULL)
|
if(env->ExceptionCheck() || inetSocketAddressClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding InetSocketAddress class");
|
LOGE("Error finding InetSocketAddress class");
|
||||||
|
@ -887,13 +887,13 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags
|
||||||
jclass versionClass = NULL;
|
jclass versionClass = NULL;
|
||||||
jmethodID versionConstructor = NULL;
|
jmethodID versionConstructor = NULL;
|
||||||
|
|
||||||
versionClass = cache.findClass("com/zerotier/sdk/Version");
|
versionClass = lookup.findClass("com/zerotier/sdk/Version");
|
||||||
if(env->ExceptionCheck() || versionClass == NULL)
|
if(env->ExceptionCheck() || versionClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
versionConstructor = cache.findMethod(
|
versionConstructor = lookup.findMethod(
|
||||||
versionClass, "<init>", "()V");
|
versionClass, "<init>", "()V");
|
||||||
if(env->ExceptionCheck() || versionConstructor == NULL)
|
if(env->ExceptionCheck() || versionConstructor == NULL)
|
||||||
{
|
{
|
||||||
|
@ -912,25 +912,25 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags
|
||||||
jfieldID revisionField = NULL;
|
jfieldID revisionField = NULL;
|
||||||
jfieldID featureFlagsField = NULL;
|
jfieldID featureFlagsField = NULL;
|
||||||
|
|
||||||
majorField = cache.findField(versionClass, "major", "I");
|
majorField = lookup.findField(versionClass, "major", "I");
|
||||||
if(env->ExceptionCheck() || majorField == NULL)
|
if(env->ExceptionCheck() || majorField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
minorField = cache.findField(versionClass, "minor", "I");
|
minorField = lookup.findField(versionClass, "minor", "I");
|
||||||
if(env->ExceptionCheck() || minorField == NULL)
|
if(env->ExceptionCheck() || minorField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
revisionField = cache.findField(versionClass, "revision", "I");
|
revisionField = lookup.findField(versionClass, "revision", "I");
|
||||||
if(env->ExceptionCheck() || revisionField == NULL)
|
if(env->ExceptionCheck() || revisionField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
featureFlagsField = cache.findField(versionClass, "featureFlags", "J");
|
featureFlagsField = lookup.findField(versionClass, "featureFlags", "J");
|
||||||
if(env->ExceptionCheck() || featureFlagsField == NULL)
|
if(env->ExceptionCheck() || featureFlagsField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
#include "com_zerotierone_sdk_Node.h"
|
#include "com_zerotierone_sdk_Node.h"
|
||||||
#include "ZT1_jniutils.h"
|
#include "ZT1_jniutils.h"
|
||||||
#include "ZT1_jnicache.h"
|
#include "ZT1_jnilookup.h"
|
||||||
|
|
||||||
#include <ZeroTierOne.h>
|
#include <ZeroTierOne.h>
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
// global static JNI Cache Object
|
// global static JNI Lookup Object
|
||||||
JniCache cache;
|
JniLookup lookup;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -104,7 +104,7 @@ namespace {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID configListenerCallbackMethod = cache.findMethod(configListenerClass,
|
jmethodID configListenerCallbackMethod = lookup.findMethod(configListenerClass,
|
||||||
"onNetworkConfigurationUpdated",
|
"onNetworkConfigurationUpdated",
|
||||||
"(JLcom/zerotier/sdk/VirtualNetworkConfigOperation;Lcom/zerotier/sdk/VirtualNetworkConfig;)I");
|
"(JLcom/zerotier/sdk/VirtualNetworkConfigOperation;Lcom/zerotier/sdk/VirtualNetworkConfig;)I");
|
||||||
if(configListenerCallbackMethod == NULL)
|
if(configListenerCallbackMethod == NULL)
|
||||||
|
@ -158,7 +158,7 @@ namespace {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID frameListenerCallbackMethod = cache.findMethod(
|
jmethodID frameListenerCallbackMethod = lookup.findMethod(
|
||||||
frameListenerClass,
|
frameListenerClass,
|
||||||
"onVirtualNetworkFrame", "(JJJJJ[B)V");
|
"onVirtualNetworkFrame", "(JJJJJ[B)V");
|
||||||
if(env->ExceptionCheck() || frameListenerCallbackMethod == NULL)
|
if(env->ExceptionCheck() || frameListenerCallbackMethod == NULL)
|
||||||
|
@ -204,7 +204,7 @@ namespace {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID onEventMethod = cache.findMethod(eventListenerClass,
|
jmethodID onEventMethod = lookup.findMethod(eventListenerClass,
|
||||||
"onEvent", "(Lcom/zerotier/sdk/Event;)V");
|
"onEvent", "(Lcom/zerotier/sdk/Event;)V");
|
||||||
if(onEventMethod == NULL)
|
if(onEventMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -213,7 +213,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
jmethodID onOutOfDateMethod = cache.findMethod(eventListenerClass,
|
jmethodID onOutOfDateMethod = lookup.findMethod(eventListenerClass,
|
||||||
"onOutOfDate", "(Lcom/zerotier/sdk/Version;)V");
|
"onOutOfDate", "(Lcom/zerotier/sdk/Version;)V");
|
||||||
if(onOutOfDateMethod == NULL)
|
if(onOutOfDateMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -222,7 +222,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
jmethodID onNetworkErrorMethod = cache.findMethod(eventListenerClass,
|
jmethodID onNetworkErrorMethod = lookup.findMethod(eventListenerClass,
|
||||||
"onNetworkError", "(Lcom/zerotier/sdk/Event;Ljava/net/InetSocketAddress;)V");
|
"onNetworkError", "(Lcom/zerotier/sdk/Event;Ljava/net/InetSocketAddress;)V");
|
||||||
if(onNetworkErrorMethod == NULL)
|
if(onNetworkErrorMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -231,7 +231,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
jmethodID onTraceMethod = cache.findMethod(eventListenerClass,
|
jmethodID onTraceMethod = lookup.findMethod(eventListenerClass,
|
||||||
"onTrace", "(Ljava/lang/String;)V");
|
"onTrace", "(Ljava/lang/String;)V");
|
||||||
if(onTraceMethod == NULL)
|
if(onTraceMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -316,7 +316,7 @@ namespace {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID dataStoreGetCallbackMethod = cache.findMethod(
|
jmethodID dataStoreGetCallbackMethod = lookup.findMethod(
|
||||||
dataStoreGetClass,
|
dataStoreGetClass,
|
||||||
"onDataStoreGet",
|
"onDataStoreGet",
|
||||||
"(Ljava/lang/String;[BJ[J)J");
|
"(Ljava/lang/String;[BJ[J)J");
|
||||||
|
@ -388,7 +388,7 @@ namespace {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID dataStorePutCallbackMethod = cache.findMethod(
|
jmethodID dataStorePutCallbackMethod = lookup.findMethod(
|
||||||
dataStorePutClass,
|
dataStorePutClass,
|
||||||
"onDataStorePut",
|
"onDataStorePut",
|
||||||
"(Ljava/lang/String;[BZ)I");
|
"(Ljava/lang/String;[BZ)I");
|
||||||
|
@ -398,7 +398,7 @@ namespace {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID deleteMethod = cache.findMethod(dataStorePutClass,
|
jmethodID deleteMethod = lookup.findMethod(dataStorePutClass,
|
||||||
"onDelete", "(Ljava/lang/String;)I");
|
"onDelete", "(Ljava/lang/String;)I");
|
||||||
if(deleteMethod == NULL)
|
if(deleteMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -453,7 +453,7 @@ namespace {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID packetSenderCallbackMethod = cache.findMethod(packetSenderClass,
|
jmethodID packetSenderCallbackMethod = lookup.findMethod(packetSenderClass,
|
||||||
"onSendPacketRequested", "(Ljava/net/InetSocketAddress;[B)I");
|
"onSendPacketRequested", "(Ljava/net/InetSocketAddress;[B)I");
|
||||||
if(packetSenderCallbackMethod == NULL)
|
if(packetSenderCallbackMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -487,13 +487,13 @@ namespace {
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
|
||||||
{
|
{
|
||||||
cache.setJavaVM(vm);
|
lookup.setJavaVM(vm);
|
||||||
return JNI_VERSION_1_6;
|
return JNI_VERSION_1_6;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved)
|
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved)
|
||||||
{
|
{
|
||||||
cache.clearCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -514,7 +514,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
env->GetJavaVM(&ref->jvm);
|
env->GetJavaVM(&ref->jvm);
|
||||||
|
|
||||||
jclass cls = env->GetObjectClass(obj);
|
jclass cls = env->GetObjectClass(obj);
|
||||||
jfieldID fid = cache.findField(
|
jfieldID fid = lookup.findField(
|
||||||
cls, "getListener", "Lcom/zerotier/sdk/DataStoreGetListener;");
|
cls, "getListener", "Lcom/zerotier/sdk/DataStoreGetListener;");
|
||||||
|
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
|
@ -529,7 +529,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
}
|
}
|
||||||
ref->dataStoreGetListener = env->NewGlobalRef(tmp);
|
ref->dataStoreGetListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = cache.findField(
|
fid = lookup.findField(
|
||||||
cls, "putListener", "Lcom/zerotier/sdk/DataStorePutListener;");
|
cls, "putListener", "Lcom/zerotier/sdk/DataStorePutListener;");
|
||||||
|
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
|
@ -544,7 +544,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
}
|
}
|
||||||
ref->dataStorePutListener = env->NewGlobalRef(tmp);
|
ref->dataStorePutListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = cache.findField(
|
fid = lookup.findField(
|
||||||
cls, "sender", "Lcom/zerotier/sdk/PacketSender;");
|
cls, "sender", "Lcom/zerotier/sdk/PacketSender;");
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
{
|
{
|
||||||
|
@ -558,7 +558,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
}
|
}
|
||||||
ref->packetSender = env->NewGlobalRef(tmp);
|
ref->packetSender = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = cache.findField(
|
fid = lookup.findField(
|
||||||
cls, "frameListener", "Lcom/zerotier/sdk/VirtualNetworkFrameListener;");
|
cls, "frameListener", "Lcom/zerotier/sdk/VirtualNetworkFrameListener;");
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
{
|
{
|
||||||
|
@ -572,7 +572,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
}
|
}
|
||||||
ref->frameListener = env->NewGlobalRef(tmp);
|
ref->frameListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = cache.findField(
|
fid = lookup.findField(
|
||||||
cls, "configListener", "Lcom/zerotier/sdk/VirtualNetworkConfigListener;");
|
cls, "configListener", "Lcom/zerotier/sdk/VirtualNetworkConfigListener;");
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
{
|
{
|
||||||
|
@ -586,7 +586,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
}
|
}
|
||||||
ref->configListener = env->NewGlobalRef(tmp);
|
ref->configListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = cache.findField(
|
fid = lookup.findField(
|
||||||
cls, "eventListener", "Lcom/zerotier/sdk/EventListener;");
|
cls, "eventListener", "Lcom/zerotier/sdk/EventListener;");
|
||||||
if(fid == NULL)
|
if(fid == NULL)
|
||||||
{
|
{
|
||||||
|
@ -758,7 +758,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
uint64_t now = (uint64_t)in_now;
|
uint64_t now = (uint64_t)in_now;
|
||||||
|
|
||||||
// get the java.net.InetSocketAddress class and getAddress() method
|
// get the java.net.InetSocketAddress class and getAddress() method
|
||||||
jclass inetAddressClass = cache.findClass("java/net/InetAddress");
|
jclass inetAddressClass = lookup.findClass("java/net/InetAddress");
|
||||||
if(inetAddressClass == NULL)
|
if(inetAddressClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Can't find InetAddress class");
|
LOGE("Can't find InetAddress class");
|
||||||
|
@ -766,7 +766,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID getAddressMethod = cache.findMethod(
|
jmethodID getAddressMethod = lookup.findMethod(
|
||||||
inetAddressClass, "getAddress", "()[B");
|
inetAddressClass, "getAddress", "()[B");
|
||||||
if(getAddressMethod == NULL)
|
if(getAddressMethod == NULL)
|
||||||
{
|
{
|
||||||
|
@ -774,13 +774,13 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
jclass InetSocketAddressClass = cache.findClass("java/net/InetSocketAddress");
|
jclass InetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress");
|
||||||
if(InetSocketAddressClass == NULL)
|
if(InetSocketAddressClass == NULL)
|
||||||
{
|
{
|
||||||
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID inetSockGetAddressMethod = cache.findMethod(
|
jmethodID inetSockGetAddressMethod = lookup.findMethod(
|
||||||
InetSocketAddressClass, "getAddress", "()Ljava/net/InetAddress;");
|
InetSocketAddressClass, "getAddress", "()Ljava/net/InetAddress;");
|
||||||
|
|
||||||
jobject addrObject = env->CallObjectMethod(in_remoteAddress, inetSockGetAddressMethod);
|
jobject addrObject = env->CallObjectMethod(in_remoteAddress, inetSockGetAddressMethod);
|
||||||
|
@ -790,7 +790,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID inetSock_getPort = cache.findMethod(
|
jmethodID inetSock_getPort = lookup.findMethod(
|
||||||
InetSocketAddressClass, "getPort", "()I");
|
InetSocketAddressClass, "getPort", "()I");
|
||||||
|
|
||||||
if(env->ExceptionCheck() || inetSock_getPort == NULL)
|
if(env->ExceptionCheck() || inetSock_getPort == NULL)
|
||||||
|
@ -1059,13 +1059,13 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_status
|
||||||
jmethodID nodeStatusConstructor = NULL;
|
jmethodID nodeStatusConstructor = NULL;
|
||||||
|
|
||||||
// create a com.zerotier.sdk.NodeStatus object
|
// create a com.zerotier.sdk.NodeStatus object
|
||||||
nodeStatusClass = cache.findClass("com/zerotier/sdk/NodeStatus");
|
nodeStatusClass = lookup.findClass("com/zerotier/sdk/NodeStatus");
|
||||||
if(nodeStatusClass == NULL)
|
if(nodeStatusClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeStatusConstructor = cache.findMethod(
|
nodeStatusConstructor = lookup.findMethod(
|
||||||
nodeStatusClass, "<init>", "()V");
|
nodeStatusClass, "<init>", "()V");
|
||||||
if(nodeStatusConstructor == NULL)
|
if(nodeStatusConstructor == NULL)
|
||||||
{
|
{
|
||||||
|
@ -1086,25 +1086,25 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_status
|
||||||
jfieldID secretIdentityField = NULL;
|
jfieldID secretIdentityField = NULL;
|
||||||
jfieldID onlineField = NULL;
|
jfieldID onlineField = NULL;
|
||||||
|
|
||||||
addressField = cache.findField(nodeStatusClass, "address", "J");
|
addressField = lookup.findField(nodeStatusClass, "address", "J");
|
||||||
if(addressField == NULL)
|
if(addressField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
publicIdentityField = cache.findField(nodeStatusClass, "publicIdentity", "Ljava/lang/String;");
|
publicIdentityField = lookup.findField(nodeStatusClass, "publicIdentity", "Ljava/lang/String;");
|
||||||
if(publicIdentityField == NULL)
|
if(publicIdentityField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
secretIdentityField = cache.findField(nodeStatusClass, "secretIdentity", "Ljava/lang/String;");
|
secretIdentityField = lookup.findField(nodeStatusClass, "secretIdentity", "Ljava/lang/String;");
|
||||||
if(secretIdentityField == NULL)
|
if(secretIdentityField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
onlineField = cache.findField(nodeStatusClass, "online", "Z");
|
onlineField = lookup.findField(nodeStatusClass, "online", "Z");
|
||||||
if(onlineField == NULL)
|
if(onlineField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1207,7 +1207,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
jclass peerClass = cache.findClass("com/zerotier/sdk/Peer");
|
jclass peerClass = lookup.findClass("com/zerotier/sdk/Peer");
|
||||||
if(env->ExceptionCheck() || peerClass == NULL)
|
if(env->ExceptionCheck() || peerClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding Peer class");
|
LOGE("Error finding Peer class");
|
||||||
|
@ -1265,7 +1265,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_networks(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
jclass vnetConfigClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfig");
|
jclass vnetConfigClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfig");
|
||||||
if(env->ExceptionCheck() || vnetConfigClass == NULL)
|
if(env->ExceptionCheck() || vnetConfigClass == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error finding VirtualNetworkConfig class");
|
LOGE("Error finding VirtualNetworkConfig class");
|
||||||
|
|
Loading…
Add table
Reference in a new issue