diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-04-22 21:29:45 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-04-22 21:29:45 -0700 |
commit | 3ccaef88b7a0f6cd7a4cf4f68d99aa04cbc47152 (patch) | |
tree | a002e82ddb6c42ee5ae0fb10b865f0c2941954db /java | |
parent | f5bb57d5aa811576b80fc746b0935fe7d3754ab2 (diff) | |
download | infinitytier-3ccaef88b7a0f6cd7a4cf4f68d99aa04cbc47152.tar.gz infinitytier-3ccaef88b7a0f6cd7a4cf4f68d99aa04cbc47152.zip |
Added implementation for Node.version()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
Diffstat (limited to 'java')
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 85 | ||||
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.h | 2 | ||||
-rw-r--r-- | java/src/com/zerotierone/sdk/Node.java | 4 | ||||
-rw-r--r-- | java/src/com/zerotierone/sdk/Version.java | 10 |
4 files changed, 94 insertions, 7 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 942f9f6d..eac1ae04 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -639,6 +639,91 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_multicastUnsubscribe return createResultObject(env, rc); } +/* + * Class: com_zerotierone_sdk_Node + * Method: version + * Signature: (J)Lcom/zerotierone/sdk/Version; + */ +JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version + (JNIEnv *env, jobject obj) +{ + // create a com.zerotierone.sdk.Version object + jclass versionClass = env->FindClass("com.zerotierone.sdk.Version"); + if(versionClass == NULL) + { + return NULL; + } + + jmethodID versionConstructor = env->GetMethodID( + versionClass, "<init>", "()V"); + if(versionConstructor == NULL) + { + return NULL; + } + + jobject versionObj = env->NewObject(versionClass, versionConstructor); + if(versionObj == NULL) + { + return NULL; + } + + int major = 0; + int minor = 0; + int revision = 0; + unsigned long featureFlags = 0; + + ZT1_version(&major, &minor, &revision, &featureFlags); + + // copy data to Version object + static jfieldID majorField = NULL; + static jfieldID minorField = NULL; + static jfieldID revisionField = NULL; + static jfieldID featureFlagsField = NULL; + + if(majorField == NULL) + { + majorField = env->GetFieldID(versionClass, "major", "Lcom.zerotierone.sdk.Version"); + if(majorField = NULL) + { + return NULL; + } + } + + if(minorField == NULL) + { + minorField = env->GetFieldID(versionClass, "minor", "Lcom.zerotierone.sdk.Version"); + if(minorField == NULL) + { + return NULL; + } + } + + if(revisionField == NULL) + { + revisionField = env->GetFieldID(versionClass, "revision", "Lcom.zerotierone.sdk.Version"); + if(revisionField == NULL) + { + return NULL; + } + } + + if(featureFlagsField == NULL) + { + featureFlagsField = env->GetFieldID(versionClass, "featureFlags", "Lcom.zerotierone.sdk.Version"); + if(featureFlagsField == NULL) + { + return NULL; + } + } + + env->SetIntField(versionObj, majorField, (jint)major); + env->SetIntField(versionObj, minorField, (jint)minor); + env->SetIntField(versionObj, revisionField, (jint)revision); + env->SetLongField(versionObj, featureFlagsField, (jlong)featureFlags); + + + return versionObj; +} #ifdef __cplusplus } // extern "C" diff --git a/java/jni/com_zerotierone_sdk_Node.h b/java/jni/com_zerotierone_sdk_Node.h index 107d336e..b5044097 100644 --- a/java/jni/com_zerotierone_sdk_Node.h +++ b/java/jni/com_zerotierone_sdk_Node.h @@ -109,7 +109,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networkConfig * Signature: (J)Lcom/zerotierone/sdk/Version; */ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version - (JNIEnv *, jobject, jlong); + (JNIEnv *, jobject); #ifdef __cplusplus } diff --git a/java/src/com/zerotierone/sdk/Node.java b/java/src/com/zerotierone/sdk/Node.java index 616951cb..8225e0f0 100644 --- a/java/src/com/zerotierone/sdk/Node.java +++ b/java/src/com/zerotierone/sdk/Node.java @@ -222,11 +222,11 @@ public class Node { // TODO: ZT1_Node_peers - private native VirtualNetworkConfig networkConfig(long nodeId); + private native VirtualNetworkConfig networkConfig(long nodeId, long nwid); // TODO: ZT1_Node_networks - private native Version version(long nodeId); + private native Version version(); }
\ No newline at end of file diff --git a/java/src/com/zerotierone/sdk/Version.java b/java/src/com/zerotierone/sdk/Version.java index b260c9de..abdaab9e 100644 --- a/java/src/com/zerotierone/sdk/Version.java +++ b/java/src/com/zerotierone/sdk/Version.java @@ -28,8 +28,10 @@ package com.zerotierone.sdk; public class Version { - public int major; - public int minor; - public int revision; - public long featureFlags; + public Version() {} + + public int major = 0; + public int minor = 0; + public int revision = 0; + public long featureFlags = 0; }
\ No newline at end of file |