|
@@ -158,7 +158,7 @@ namespace {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- void EventCallback(ZT1_Node *node,void *userData,enum ZT1_Event,const void *)
|
|
|
|
|
|
+ void EventCallback(ZT1_Node *node,void *userData,enum ZT1_Event event, const void *data)
|
|
{
|
|
{
|
|
JniRef *ref = (JniRef*)userData;
|
|
JniRef *ref = (JniRef*)userData;
|
|
assert(ref->node == node);
|
|
assert(ref->node == node);
|
|
@@ -166,17 +166,58 @@ namespace {
|
|
JNIEnv *env = ref->env;
|
|
JNIEnv *env = ref->env;
|
|
}
|
|
}
|
|
|
|
|
|
- long DataStoreGetFunction(ZT1_Node *node,void *userData,const char *,void *,unsigned long,unsigned long,unsigned long *)
|
|
|
|
|
|
+ long DataStoreGetFunction(ZT1_Node *node,void *userData,
|
|
|
|
+ const char *objectName,
|
|
|
|
+ void *buffer,
|
|
|
|
+ unsigned long bufferSize,
|
|
|
|
+ unsigned long bufferIndex,
|
|
|
|
+ unsigned long *out_objectSize)
|
|
{
|
|
{
|
|
JniRef *ref = (JniRef*)userData;
|
|
JniRef *ref = (JniRef*)userData;
|
|
assert(ref->node == node);
|
|
assert(ref->node == node);
|
|
|
|
|
|
JNIEnv *env = ref->env;
|
|
JNIEnv *env = ref->env;
|
|
|
|
|
|
- return 0;
|
|
|
|
|
|
+ static jclass dataStoreGetClass = NULL;
|
|
|
|
+ static jmethodID callbackMethod = NULL;
|
|
|
|
+
|
|
|
|
+ if(dataStoreGetClass == NULL)
|
|
|
|
+ {
|
|
|
|
+ dataStoreGetClass = env->GetObjectClass(ref->dataStoreGetListener);
|
|
|
|
+ if(dataStoreGetClass == NULL)
|
|
|
|
+ {
|
|
|
|
+ return -2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(callbackMethod == NULL)
|
|
|
|
+ {
|
|
|
|
+ callbackMethod = env->GetMethodID(dataStoreGetClass,
|
|
|
|
+ "onDataStoreGet",
|
|
|
|
+ "(Ljava/lang/String;[BJJ[J)J");
|
|
|
|
+ if(callbackMethod == NULL)
|
|
|
|
+ {
|
|
|
|
+ return -2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ jstring nameStr = env->NewStringUTF(objectName);
|
|
|
|
+ jbyteArray bufferObj = env->NewByteArray(bufferSize);
|
|
|
|
+ jlongArray objectSizeObj = env->NewLongArray(1);
|
|
|
|
+
|
|
|
|
+ long retval = env->CallLongMethod(
|
|
|
|
+ dataStoreGetClass, callbackMethod, nameStr, bufferObj, bufferSize, bufferIndex, objectSizeObj);
|
|
|
|
+
|
|
|
|
+ env->GetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer);
|
|
|
|
+ env->GetLongArrayRegion(objectSizeObj, 0, 1, (jlong*)&out_objectSize);
|
|
|
|
+ env->ReleaseByteArrayElements(bufferObj, (jbyte*)buffer, 0);
|
|
|
|
+ env->ReleaseLongArrayElements(objectSizeObj, (jlong*)&out_objectSize, 0);
|
|
|
|
+
|
|
|
|
+ return retval;
|
|
}
|
|
}
|
|
|
|
|
|
- int DataStorePutFunction(ZT1_Node *node,void *userData,const char *,const void *,unsigned long,int)
|
|
|
|
|
|
+ int DataStorePutFunction(ZT1_Node *node,void *userData,
|
|
|
|
+ const char *,const void *,unsigned long,int)
|
|
{
|
|
{
|
|
JniRef *ref = (JniRef*)userData;
|
|
JniRef *ref = (JniRef*)userData;
|
|
assert(ref->node == node);
|
|
assert(ref->node == node);
|