diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-04-24 19:43:17 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-04-24 19:43:17 -0700 |
commit | f2eed5a65f21c8d5916defcf4b88d2665e38a192 (patch) | |
tree | 0cb0c5277b2ec1d1d08de8ccc105f1cbe3c46b3f /java | |
parent | 5e1fb4e2530e8995f942686cf0783f47a3c804c8 (diff) | |
download | infinitytier-f2eed5a65f21c8d5916defcf4b88d2665e38a192.tar.gz infinitytier-f2eed5a65f21c8d5916defcf4b88d2665e38a192.zip |
implemented WirePacketSendFunction
Diffstat (limited to 'java')
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 25 | ||||
-rw-r--r-- | java/src/com/zerotierone/sdk/PacketSender.java | 7 |
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); } |