|
@@ -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"
|