implemented WirePacketSendFunction

This commit is contained in:
Grant Limberg 2015-04-24 19:43:17 -07:00
parent 5e1fb4e253
commit f2eed5a65f
2 changed files with 26 additions and 6 deletions

View File

@ -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;

View File

@ -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);
}