From 6fc28b0523978a6eca6d7d6ce12b6807bf6492c0 Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Fri, 3 May 2019 08:45:38 +0200 Subject: fix vpp string type api implementation - separate static string functions to string_t.h library - ignore string limit value for now. We would need to create wrapper class for string to support max length in java. API example: [ "string", "version", { "limit": 32 } ] Change-Id: I60a8a2c56397d54d49544551dc91733e12a0a0ea Signed-off-by: Michal Cmarada --- java/jvpp-common/string_t.h | 68 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 java/jvpp-common/string_t.h (limited to 'java/jvpp-common') diff --git a/java/jvpp-common/string_t.h b/java/jvpp-common/string_t.h new file mode 100644 index 0000000..8a2b3cc --- /dev/null +++ b/java/jvpp-common/string_t.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2019 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#ifndef JVPP_STRING_T_H +#define JVPP_STRING_T_H + +#endif //JVPP_STRING_T_H + +// +// /** +// * Returns the length of jstring as size_t +// */ +static size_t jstr_length(JNIEnv *env, jstring string) +{ + return ((int) (*env)->GetStringUTFLength(env, string)); +} + +// /** +// * Host to network byte order conversion for string type. Converts String in Java to VPP string type. +// * typedef struct +// * { +// * u32 length; +// * u8 buf[0]; +// * } __attribute__ ((packed)) vl_api_string_t; +// */ +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) + 1, nativeString, vl_api_string); + + (*env)->ReleaseStringUTFChars(env, javaString, nativeString); +} + +// +// /** +// * Network to host byte order conversion for string type. Converts VPP string type to String in Java +// * typedef struct +// * { +// * u32 length; +// * u8 buf[0]; +// * } __attribute__ ((packed)) vl_api_string_t; +// */ +static jstring _net_to_host_string(JNIEnv * env, const vl_api_string_t * _net) +{ + return (*env)->NewStringUTF(env, (char *)_net->buf); +} -- cgit 1.2.3-korg