diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-04-23 20:52:47 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-04-23 20:52:47 -0700 |
commit | fa9d42b7e5e701ff062d77b6e041dbb687c10e25 (patch) | |
tree | 02053c0e1118c74ffdf1a0a4c628a493322e8c36 /java | |
parent | 1a528aec76ffd006c714c69b398796d45d5b33ce (diff) | |
download | infinitytier-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.cpp | 61 | ||||
-rw-r--r-- | java/src/com/zerotierone/sdk/NodeStatus.java | 14 |
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 |