diff options
Diffstat (limited to 'extras/japi/java/jvpp-core/jvpp_core.c')
-rw-r--r-- | extras/japi/java/jvpp-core/jvpp_core.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/extras/japi/java/jvpp-core/jvpp_core.c b/extras/japi/java/jvpp-core/jvpp_core.c index 0df8589702c..9e5ef1fd295 100644 --- a/extras/japi/java/jvpp-core/jvpp_core.c +++ b/extras/japi/java/jvpp-core/jvpp_core.c @@ -26,6 +26,7 @@ #include <jni.h> #include <jvpp_core.h> + // TODO: generate jvpp_plugin_name.c files (or at least reuse plugin's main structure) typedef struct { /* Pointer to shared memory queue */ @@ -107,4 +108,29 @@ void JNI_OnUnload(JavaVM *vm, void *reserved) { } +static void _host_to_net_string(JNIEnv * env, jstring javaString, vl_api_string_t * vl_api_string) +{ + const char *nativeString; + // prevent null, which causes jni to crash + if (NULL != javaString) { + nativeString = (*env)->GetStringUTFChars(env, javaString, 0); + } else{ + nativeString = ""; + } + + vl_api_to_api_string(jstr_length(env, javaString), nativeString, vl_api_string); + + (*env)->ReleaseStringUTFChars(env, javaString, nativeString); +} + + +static jstring _net_to_host_string(JNIEnv * env, const vl_api_string_t * _net) +{ + return (*env)->NewStringUTF(env, (char *)_net->buf); +} + +static size_t jstr_length(JNIEnv *env, jstring string) +{ + return ((int) (*env)->GetStringUTFLength(env, string)); +} |