mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 12:33:44 +02:00
implemented WirePacketSendFunction
This commit is contained in:
parent
5e1fb4e253
commit
f2eed5a65f
2 changed files with 26 additions and 6 deletions
|
@ -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;
|
JniRef *ref = (JniRef*)userData;
|
||||||
assert(ref->node == node);
|
assert(ref->node == node);
|
||||||
|
|
||||||
JNIEnv *env = ref->env;
|
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;
|
typedef std::map<uint64_t, JniRef*> NodeMap;
|
||||||
|
|
|
@ -30,9 +30,8 @@ import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
|
||||||
public interface PacketSender {
|
public interface PacketSender {
|
||||||
public int onSendPacketRequested(Node node,
|
public int onSendPacketRequested(
|
||||||
String addr,
|
String addr,
|
||||||
int linkDesc,
|
int linkDesparation,
|
||||||
ByteBuffer packetData,
|
byte[] packetData);
|
||||||
long dataLength);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue