summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-04-23 20:52:47 -0700
committerGrant Limberg <glimberg@gmail.com>2015-04-23 20:52:47 -0700
commitfa9d42b7e5e701ff062d77b6e041dbb687c10e25 (patch)
tree02053c0e1118c74ffdf1a0a4c628a493322e8c36 /java
parent1a528aec76ffd006c714c69b398796d45d5b33ce (diff)
downloadinfinitytier-fa9d42b7e5e701ff062d77b6e041dbb687c10e25.tar.gz
infinitytier-fa9d42b7e5e701ff062d77b6e041dbb687c10e25.zip
finished the JNI implementation of the status() method on Node
Signed-off-by: Grant Limberg <glimberg@gmail.com>
Diffstat (limited to 'java')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp61
-rw-r--r--java/src/com/zerotierone/sdk/NodeStatus.java14
2 files changed, 67 insertions, 8 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp
index 19ac4c47..c5c0c911 100644
--- a/java/jni/com_zerotierone_sdk_Node.cpp
+++ b/java/jni/com_zerotierone_sdk_Node.cpp
@@ -43,7 +43,7 @@ namespace {
jobject createResultObject(JNIEnv *env, ZT1_ResultCode code);
jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status);
jobject createEvent(JNIEnv *env, ZT1_Event event);
-
+
struct JniRef
{
JniRef()
@@ -804,7 +804,64 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_status
ZT1_NodeStatus nodeStatus;
ZT1_Node_status(node, &nodeStatus);
- // TODO: copy data from C to Java
+ static jfieldID addressField = NULL;
+ static jfieldID publicIdentityField = NULL;
+ static jfieldID secretIdentityField = NULL;
+ static jfieldID onlineField = NULL;
+
+ if(addressField == NULL)
+ {
+ addressField = env->GetFieldID(nodeStatusClass, "address", "Lcom/zerotierone/sdk/NodeStatus;");
+ if(addressField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(publicIdentityField == NULL)
+ {
+ publicIdentityField = env->GetFieldID(nodeStatusClass, "publicIdentity", "Lcom/zerotierone/sdk/NodeStatus;");
+ if(publicIdentityField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(secretIdentityField == NULL)
+ {
+ secretIdentityField = env->GetFieldID(nodeStatusClass, "secretIdentity", "Lcom/zerotierone/sdk/NodeStatus;");
+ if(secretIdentityField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(onlineField == NULL)
+ {
+ onlineField = env->GetFieldID(nodeStatusClass, "online", "Lcom/zerotierone/sdk/NodeStatus;");
+ if(onlineField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ env->SetIntField(nodeStatusObj, addressField, nodeStatus.address);
+
+ jstring pubIdentStr = env->NewStringUTF(nodeStatus.publicIdentity);
+ if(pubIdentStr == NULL)
+ {
+ return NULL; // out of memory
+ }
+ env->SetObjectField(nodeStatusObj, publicIdentityField, pubIdentStr);
+
+ jstring secIdentStr = env->NewStringUTF(nodeStatus.secretIdentity);
+ if(secIdentStr == NULL)
+ {
+ return NULL; // out of memory
+ }
+ env->SetObjectField(nodeStatusObj, secretIdentityField, secIdentStr);
+
+ env->SetBooleanField(nodeStatusObj, onlineField, nodeStatus.online);
return nodeStatusObj;
}
diff --git a/java/src/com/zerotierone/sdk/NodeStatus.java b/java/src/com/zerotierone/sdk/NodeStatus.java
index 4f584bcb..fdf5284e 100644
--- a/java/src/com/zerotierone/sdk/NodeStatus.java
+++ b/java/src/com/zerotierone/sdk/NodeStatus.java
@@ -31,21 +31,23 @@ public class NodeStatus {
private long address;
private String publicIdentity;
private String secretIdentity;
- private int online;
+ private boolean online;
- public long getAddres() {
+ private NodeStatus() {}
+
+ public final long getAddres() {
return address;
}
- public String getPublicIdentity() {
+ public final String getPublicIdentity() {
return publicIdentity;
}
- public String getSecretIdentity() {
+ public final String getSecretIdentity() {
return secretIdentity;
}
- public boolean isOnline() {
- return online != 0;
+ public final boolean isOnline() {
+ return online;
}
} \ No newline at end of file