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