From d8f1c3dff73277000b1c4fe0f8e6dc169576a880 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 12 Jul 2017 11:34:53 -0700 Subject: Update JNI code to reflect new ZeroTier API --- java/src/com/zerotier/sdk/DataStoreGetListener.java | 8 ++------ java/src/com/zerotier/sdk/PacketSender.java | 4 ++-- java/src/com/zerotier/sdk/PathChecker.java | 4 ++-- 3 files changed, 6 insertions(+), 10 deletions(-) (limited to 'java/src') diff --git a/java/src/com/zerotier/sdk/DataStoreGetListener.java b/java/src/com/zerotier/sdk/DataStoreGetListener.java index b525be63..317511e0 100644 --- a/java/src/com/zerotier/sdk/DataStoreGetListener.java +++ b/java/src/com/zerotier/sdk/DataStoreGetListener.java @@ -46,13 +46,9 @@ public interface DataStoreGetListener { * * @param name Name of the object in the data store * @param out_buffer buffer to put the object in - * @param bufferIndex index in the object to start reading - * @param out_objectSize long[1] to be set to the actual size of the object if it exists. - * @return the actual number of bytes read. + * @return size of the object */ public long onDataStoreGet( String name, - byte[] out_buffer, - long bufferIndex, - long[] out_objectSize); + byte[] out_buffer); } diff --git a/java/src/com/zerotier/sdk/PacketSender.java b/java/src/com/zerotier/sdk/PacketSender.java index 22893ec7..06ec01bc 100644 --- a/java/src/com/zerotier/sdk/PacketSender.java +++ b/java/src/com/zerotier/sdk/PacketSender.java @@ -37,13 +37,13 @@ public interface PacketSender { * on failure. Note that success does not (of course) guarantee packet * delivery. It only means that the packet appears to have been sent.

* - * @param localAddr {@link InetSocketAddress} to send from. Set to null if not specified. + * @param localSocket socket file descriptor to send from. Set to -1 if not specified. * @param remoteAddr {@link InetSocketAddress} to send to * @param packetData data to send * @return 0 on success, any error code on failure. */ public int onSendPacketRequested( - InetSocketAddress localAddr, + long localSocket, InetSocketAddress remoteAddr, byte[] packetData, int ttl); diff --git a/java/src/com/zerotier/sdk/PathChecker.java b/java/src/com/zerotier/sdk/PathChecker.java index 3e02f112..6bf31df2 100644 --- a/java/src/com/zerotier/sdk/PathChecker.java +++ b/java/src/com/zerotier/sdk/PathChecker.java @@ -26,10 +26,10 @@ public interface PathChecker { * such as network containers or embedded. * * @param ztAddress ZeroTier address or 0 for none/any - * @param localAddress Local interface address + * @param localSocket Local interface socket. -1 if unspecified * @param remoteAddress remote address */ - boolean onPathCheck(long ztAddress, InetSocketAddress localAddress, InetSocketAddress remoteAddress); + boolean onPathCheck(long ztAddress, long localSocket, InetSocketAddress remoteAddress); /** * Function to get physical addresses for ZeroTier peers -- cgit v1.2.3 From 512c3af4eabaa085aca1c8b3dfdbcdd383135b9a Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 12 Jul 2017 13:12:45 -0700 Subject: fix packet sending functions --- java/jni/com_zerotierone_sdk_Node.cpp | 15 +++++++++++++-- java/src/com/zerotier/sdk/Node.java | 6 +++--- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'java/src') diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 94466db1..4d0dcff9 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -443,11 +443,22 @@ namespace { LOGV("Calling onDataStoreGet(%s, %p)", p, buffer); - return (int)env->CallLongMethod( + int retval = (int)env->CallLongMethod( ref->dataStoreGetListener, dataStoreGetCallbackMethod, nameStr, bufferObj); + + LOGV("onDataStoreGet returned %d", retval); + + if(retval > 0) + { + void *data = env->GetPrimitiveArrayCritical(bufferObj, NULL); + memcpy(buffer, data, retval); + env->ReleasePrimitiveArrayCritical(bufferObj, data, 0); + } + + return retval; } int WirePacketSendFunction(ZT_Node *node, @@ -459,7 +470,7 @@ namespace { unsigned int bufferSize, unsigned int ttl) { - LOGV("WirePacketSendFunction(%ld, %p, %p, %d)", localSocket, remoteAddress, buffer, bufferSize); + LOGV("WirePacketSendFunction(%lld, %p, %p, %d)", (long long)localSocket, remoteAddress, buffer, bufferSize); JniRef *ref = (JniRef*)userData; assert(ref->node == node); diff --git a/java/src/com/zerotier/sdk/Node.java b/java/src/com/zerotier/sdk/Node.java index 8e7d44e7..ef6ac9d2 100644 --- a/java/src/com/zerotier/sdk/Node.java +++ b/java/src/com/zerotier/sdk/Node.java @@ -173,12 +173,12 @@ public class Node { */ public ResultCode processWirePacket( long now, - InetSocketAddress localAddress, + long localSocket, InetSocketAddress remoteAddress, byte[] packetData, long[] nextBackgroundTaskDeadline) { return processWirePacket( - nodeId, now, localAddress, remoteAddress, packetData, + nodeId, now, localSocket, remoteAddress, packetData, nextBackgroundTaskDeadline); } @@ -426,7 +426,7 @@ public class Node { private native ResultCode processWirePacket( long nodeId, long now, - InetSocketAddress localAddress, + long localSocket, InetSocketAddress remoteAddress, byte[] packetData, long[] nextBackgroundTaskDeadline); -- cgit v1.2.3