summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-04-24 19:43:17 -0700
committerGrant Limberg <glimberg@gmail.com>2015-04-24 19:43:17 -0700
commitf2eed5a65f21c8d5916defcf4b88d2665e38a192 (patch)
tree0cb0c5277b2ec1d1d08de8ccc105f1cbe3c46b3f /java
parent5e1fb4e2530e8995f942686cf0783f47a3c804c8 (diff)
downloadinfinitytier-f2eed5a65f21c8d5916defcf4b88d2665e38a192.tar.gz
infinitytier-f2eed5a65f21c8d5916defcf4b88d2665e38a192.zip
implemented WirePacketSendFunction
Diffstat (limited to 'java')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp25
-rw-r--r--java/src/com/zerotierone/sdk/PacketSender.java7
2 files changed, 26 insertions, 6 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp
index 5fd22dab..72e9fe10 100644
--- a/java/jni/com_zerotierone_sdk_Node.cpp
+++ b/java/jni/com_zerotierone_sdk_Node.cpp
@@ -255,15 +255,36 @@ namespace {
}
}
- int WirePacketSendFunction(ZT1_Node *node,void *userData,const struct sockaddr_storage *,unsigned int,const void *,unsigned int)
+ int WirePacketSendFunction(ZT1_Node *node,void *userData,\
+ const struct sockaddr_storage *address,
+ unsigned int linkDesparation,
+ const void *buffer,
+ unsigned int bufferSize)
{
JniRef *ref = (JniRef*)userData;
assert(ref->node == node);
JNIEnv *env = ref->env;
+ jclass packetSenderClass = NULL;
+ jmethodID callbackMethod = NULL;
- return 0;
+ packetSenderClass = env->GetObjectClass(ref->packetSender);
+ if(packetSenderClass == NULL)
+ {
+ return -1;
+ }
+
+ callbackMethod = env->GetMethodID(packetSenderClass,
+ "onSendPacketRequested", "(Ljava/lang/String;I[B)I");
+ if(callbackMethod == NULL)
+ {
+ return -2;
+ }
+ jobject addressObj = newInetAddress(env, *address);
+ jbyteArray bufferObj = env->NewByteArray(bufferSize);
+ env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer);
+ return env->CallIntMethod(packetSenderClass, callbackMethod, addressObj, linkDesparation, bufferObj);
}
typedef std::map<uint64_t, JniRef*> NodeMap;
diff --git a/java/src/com/zerotierone/sdk/PacketSender.java b/java/src/com/zerotierone/sdk/PacketSender.java
index 0e007ffb..572e1807 100644
--- a/java/src/com/zerotierone/sdk/PacketSender.java
+++ b/java/src/com/zerotierone/sdk/PacketSender.java
@@ -30,9 +30,8 @@ import java.nio.ByteBuffer;
public interface PacketSender {
- public int onSendPacketRequested(Node node,
+ public int onSendPacketRequested(
String addr,
- int linkDesc,
- ByteBuffer packetData,
- long dataLength);
+ int linkDesparation,
+ byte[] packetData);
}