diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index b0a1bae8d..a442b7d5b 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -1043,6 +1043,28 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version 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 } // extern "C" #endif \ No newline at end of file diff --git a/java/jni/com_zerotierone_sdk_Node.h b/java/jni/com_zerotierone_sdk_Node.h index b50440975..fefc9fc52 100644 --- a/java/jni/com_zerotierone_sdk_Node.h +++ b/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 * Method: version - * Signature: (J)Lcom/zerotierone/sdk/Version; + * Signature: ()Lcom/zerotierone/sdk/Version; */ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version (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 } #endif diff --git a/java/src/com/zerotierone/sdk/Node.java b/java/src/com/zerotierone/sdk/Node.java index bb8bbeeee..34a67cb7f 100644 --- a/java/src/com/zerotierone/sdk/Node.java +++ b/java/src/com/zerotierone/sdk/Node.java @@ -30,6 +30,7 @@ package com.zerotierone.sdk; import java.nio.ByteBuffer; import java.lang.Long; import java.net.InetAddress; +import java.util.ArrayList; public class Node { static { @@ -157,13 +158,17 @@ public class Node { return status(nodeId); } - // TODO: ZT1_Node_peers + public ArrayList peers() { + return peers(nodeId); + } public VirtualNetworkConfig networkConfig(long nwid) { return networkConfig(nodeId, nwid); } - // TODO: ZT1_Node_networks + public ArrayList networks() { + return networks(nodeId); + } public Version getVersion() { return version(); @@ -220,13 +225,11 @@ public class Node { private native NodeStatus status(long nodeId); - // TODO: ZT1_Node_peers - private native VirtualNetworkConfig networkConfig(long nodeId, long nwid); - // TODO: ZT1_Node_networks - private native Version version(); + private native ArrayList peers(long nodeId); + private native ArrayList networks(long nodeId); } \ No newline at end of file diff --git a/java/src/com/zerotierone/sdk/Peer.java b/java/src/com/zerotierone/sdk/Peer.java new file mode 100644 index 000000000..cd2268b45 --- /dev/null +++ b/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 . + * + * -- + * + * 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 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 paths() { + return paths; + } +} \ No newline at end of file diff --git a/java/src/com/zerotierone/sdk/PeerRole.java b/java/src/com/zerotierone/sdk/PeerRole.java new file mode 100644 index 000000000..979b1a981 --- /dev/null +++ b/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 . + * + * -- + * + * 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 +} \ No newline at end of file diff --git a/java/src/com/zerotierone/sdk/PhysicalPeerPath.java b/java/src/com/zerotierone/sdk/PhysicalPeerPath.java new file mode 100644 index 000000000..1eb69f653 --- /dev/null +++ b/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 . + * + * -- + * + * 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; + } +} \ No newline at end of file