diff options
author | 2019-01-04 13:29:25 +0100 | |
---|---|---|
committer | 2019-01-04 13:29:25 +0100 | |
commit | 6ebc6eb3d27e0abbc66dbb2548808e1a338f89b4 (patch) | |
tree | 2d5348da51e9a16099eb904efbae49845b99177a /extras/japi/java/jvpp-core/jvpp_core.c | |
parent | b56fcf14d8a8801b24d373f519b36df2b2879b72 (diff) |
VPP-1525: additional fixes for strings in Japi
Change-Id: Ic5aa09fdc360cdded16d3c4693f0d4b2067f66d6
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
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)); +} |