summaryrefslogtreecommitdiffstats
path: root/extras/japi/java/jvpp-core/jvpp_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'extras/japi/java/jvpp-core/jvpp_core.c')
-rw-r--r--extras/japi/java/jvpp-core/jvpp_core.c26
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));
+}