Browse Source

added infrastructure for Node.peers() and Node.networks() functions

Signed-off-by: Grant Limberg <[email protected]>
Grant Limberg 10 years ago
parent
commit
9ab7280703

+ 22 - 0
java/jni/com_zerotierone_sdk_Node.cpp

@@ -1043,6 +1043,28 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
     return versionObj;
     return versionObj;
 }
 }
 
 
+/*
+ * Class:     com_zerotierone_sdk_Node
+ * Method:    peers
+ * Signature: (J)Ljava/util/ArrayList;
+ */
+JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_peers(
+    JNIEnv *env, jobject obj, jlong id)
+{
+    return NULL;
+}
+
+/*
+ * Class:     com_zerotierone_sdk_Node
+ * Method:    networks
+ * Signature: (J)Ljava/util/ArrayList;
+ */
+JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networks(
+    JNIEnv *env, jobject obj, jlong id)
+{
+    return NULL;
+}
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 } // extern "C"
 } // extern "C"
 #endif
 #endif

+ 17 - 1
java/jni/com_zerotierone_sdk_Node.h

@@ -106,11 +106,27 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networkConfig
 /*
 /*
  * Class:     com_zerotierone_sdk_Node
  * Class:     com_zerotierone_sdk_Node
  * Method:    version
  * Method:    version
- * Signature: (J)Lcom/zerotierone/sdk/Version;
+ * Signature: ()Lcom/zerotierone/sdk/Version;
  */
  */
 JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
 JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
   (JNIEnv *, jobject);
   (JNIEnv *, jobject);
 
 
+/*
+ * Class:     com_zerotierone_sdk_Node
+ * Method:    peers
+ * Signature: (J)Ljava/util/ArrayList;
+ */
+JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_peers
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     com_zerotierone_sdk_Node
+ * Method:    networks
+ * Signature: (J)Ljava/util/ArrayList;
+ */
+JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networks
+  (JNIEnv *, jobject, jlong);
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif

+ 9 - 6
java/src/com/zerotierone/sdk/Node.java

@@ -30,6 +30,7 @@ package com.zerotierone.sdk;
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 import java.lang.Long;
 import java.lang.Long;
 import java.net.InetAddress;
 import java.net.InetAddress;
+import java.util.ArrayList;
 
 
 public class Node {
 public class Node {
 	static {
 	static {
@@ -157,13 +158,17 @@ public class Node {
         return status(nodeId);
         return status(nodeId);
     }
     }
 
 
-    // TODO: ZT1_Node_peers
+    public ArrayList<Peer> peers() {
+        return peers(nodeId);
+    }
 
 
     public VirtualNetworkConfig networkConfig(long nwid) {
     public VirtualNetworkConfig networkConfig(long nwid) {
         return networkConfig(nodeId, nwid);
         return networkConfig(nodeId, nwid);
     }
     }
 
 
-    // TODO: ZT1_Node_networks
+    public ArrayList<VirtualNetworkConfig> networks() {
+        return networks(nodeId);
+    }
 
 
     public Version getVersion() {
     public Version getVersion() {
         return version();
         return version();
@@ -220,13 +225,11 @@ public class Node {
 
 
     private native NodeStatus status(long nodeId);
     private native NodeStatus status(long nodeId);
 
 
-    // TODO: ZT1_Node_peers
-
     private native VirtualNetworkConfig networkConfig(long nodeId, long nwid);
     private native VirtualNetworkConfig networkConfig(long nodeId, long nwid);
 
 
-    // TODO: ZT1_Node_networks
-
     private native Version version();
     private native Version version();
 
 
+    private native ArrayList<Peer> peers(long nodeId);
 
 
+    private native ArrayList<VirtualNetworkConfig> networks(long nodeId);
 }
 }

+ 80 - 0
java/src/com/zerotierone/sdk/Peer.java

@@ -0,0 +1,80 @@
+/*
+ * 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/
+ */
+
+package com.zerotierone.sdk;
+
+import java.util.ArrayList;
+
+public class Peer {
+    private long address;
+    private long lastUnicastFrame;
+    private long lastMulticastFrame;
+    private int versionMajor;
+    private int versionMinor;
+    private int versionRev;
+    private int latency;
+    private PeerRole role;
+    private ArrayList<PhysicalPeerPath> paths;
+
+    private Peer() {}
+
+    public final long address() {
+        return address;
+    }
+
+    public final long lastUnicastFrame() {
+        return lastUnicastFrame;
+    }
+
+    public final long lastMulticastFrame() {
+        return lastMulticastFrame;
+    }
+
+    public final int versionMajor() {
+        return versionMajor;
+    }
+
+    public final int versionMinor() {
+        return versionMinor;
+    }
+
+    public final int versionRev() {
+        return versionRev;
+    }
+
+    public final int latency() {
+        return latency;
+    }
+
+    public final PeerRole role() {
+        return role;
+    }
+
+    public final ArrayList<PhysicalPeerPath> paths() {
+        return paths;
+    }
+}

+ 34 - 0
java/src/com/zerotierone/sdk/PeerRole.java

@@ -0,0 +1,34 @@
+/*
+ * 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/
+ */
+
+package com.zerotierone.sdk;
+
+public enum PeerRole {
+    PEER_ROLE_LEAF,
+    PEER_ROLE_HUB,
+    PEER_ROLE_SUPERNODE
+}

+ 65 - 0
java/src/com/zerotierone/sdk/PhysicalPeerPath.java

@@ -0,0 +1,65 @@
+/*
+ * 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/
+ */
+
+package com.zerotierone.sdk;
+
+import java.net.InetAddress;
+
+public class PhysicalPeerPath {
+    private InetAddress address;
+    private long lastSend;
+    private long lastReceive;
+    private boolean fixed;
+    private boolean active;
+    private boolean preferred;
+
+    private PhysicalPeerPath() {}
+
+    public final InetAddress address() {
+        return address;
+    }
+
+    public final long lastSend() {
+        return lastSend;
+    }
+
+    public final long lastReceive() {
+        return lastReceive;
+    }
+
+    public final boolean isFixed() {
+        return fixed;
+    }
+
+    public final boolean isActive() {
+        return active;
+    }
+
+    public final boolean isPreferred() {
+        return preferred;
+    }
+}