X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fjapi%2Fjava%2Fjvpp-core%2Fjvpp_core.c;fp=extras%2Fjapi%2Fjava%2Fjvpp-core%2Fjvpp_core.c;h=9e5ef1fd2958c8f5e2fdd7c1f0db4f8b85d6d55f;hb=6ebc6eb3d27e0abbc66dbb2548808e1a338f89b4;hp=0df8589702c29523795868bc077d7525137d44d7;hpb=b56fcf14d8a8801b24d373f519b36df2b2879b72;p=vpp.git 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 #include + // 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)); +}