diff options
| author | Grant Limberg <glimberg@gmail.com> | 2015-04-24 18:39:17 -0700 |
|---|---|---|
| committer | Grant Limberg <glimberg@gmail.com> | 2015-04-24 18:39:17 -0700 |
| commit | 28168fa673c359270089439179aa09107a882902 (patch) | |
| tree | 0a4888153541e270f6a65696d241f1804ff47302 /java/jni/com_zerotierone_sdk_Node.cpp | |
| parent | 99af0f3a88a26632252f3b5480a18ca173b9e85f (diff) | |
| download | infinitytier-28168fa673c359270089439179aa09107a882902.tar.gz infinitytier-28168fa673c359270089439179aa09107a882902.zip | |
implement VirtualNetworkConfigFunctionCallback
Diffstat (limited to 'java/jni/com_zerotierone_sdk_Node.cpp')
| -rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index fb72ef86..fe8c8c3e 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -65,14 +65,49 @@ namespace { }; - int VirtualNetworkConfigFunctionCallback(ZT1_Node *node,void *userData,uint64_t,enum ZT1_VirtualNetworkConfigOperation,const ZT1_VirtualNetworkConfig *) + int VirtualNetworkConfigFunctionCallback(ZT1_Node *node,void *userData,uint64_t nwid,enum ZT1_VirtualNetworkConfigOperation operation, const ZT1_VirtualNetworkConfig *config) { JniRef *ref = (JniRef*)userData; assert(ref->node == node); JNIEnv *env = ref->env; - return 0; + static jclass configListenerClass = NULL; + static jmethodID callbackMethod = NULL; + + if(configListenerClass == NULL) + { + configListenerClass = env->GetObjectClass(ref->configListener); + if(configListenerClass == NULL) + { + return -1; + } + } + + if(callbackMethod == NULL) + { + callbackMethod = env->GetMethodID(configListenerClass, + "onNetworkConfigurationUpdated", + "(JLcom/zerotierone/sdk/VirtualNetworkConfigOperation;Lcom/zerotierone/sdk/VirtualNetworkConfig;)I"); + if(callbackMethod == NULL) + { + return -2; + } + } + + jobject operationObject = createVirtualNetworkConfigOperation(env, operation); + if(operationObject == NULL) + { + return -3; + } + + jobject networkConfigObject = newNetworkConfig(env, *config); + if(networkConfigObject == NULL) + { + return -4; + } + + return env->CallIntMethod(ref->configListener, callbackMethod, (jlong)nwid, operationObject, networkConfigObject); } void VirtualNetworkFrameFunctionCallback(ZT1_Node *node,void *userData,uint64_t,uint64_t,uint64_t,unsigned int,unsigned int,const void *,unsigned int) |
