diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2017-01-27 08:57:40 +0100 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2017-01-27 19:53:59 +0000 |
commit | 4746a5d75ebb080d15d5d743dca3a85d0265176f (patch) | |
tree | 1b3d9f6ddbeed9a9b561cb688afbf67c73c9f34c /src/vpp-api/java/jvpp-common/jvpp_common.c | |
parent | 32e1c010b0c34fd0984f7fc45fae648a182025c5 (diff) |
jvpp: utilize per-message CRCs (VPP-544)
Since messages ids are no longer statically referenced,
fixes also VPP-611.
Change-Id: Ic8e6ee2b7f1142c185595347984d69350be25ac3
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'src/vpp-api/java/jvpp-common/jvpp_common.c')
-rw-r--r-- | src/vpp-api/java/jvpp-common/jvpp_common.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vpp-api/java/jvpp-common/jvpp_common.c b/src/vpp-api/java/jvpp-common/jvpp_common.c index a161c09c95b..b88c0ea2197 100644 --- a/src/vpp-api/java/jvpp-common/jvpp_common.c +++ b/src/vpp-api/java/jvpp-common/jvpp_common.c @@ -63,3 +63,19 @@ void call_on_error(const char* callName, int contextId, int retval, (*env)->CallVoidMethod(env, callbackObject, callbackExcMethod, excObject); DEBUG_LOG("CallOnError : Response sent\n"); } + +u32 get_message_id(JNIEnv *env, const char *key) { + uword *p = hash_get(jvpp_main.messages_hash, key); + if (!p) { + jclass exClass = (*env)->FindClass(env, "java/lang/IllegalStateException"); + char *msgBuf = clib_mem_alloc(strlen(key) + 40); + strcpy(msgBuf, "API mismatch detected: "); + strcat(msgBuf, key); + strcat(msgBuf, " is missing"); + DEBUG_LOG("get_message_id : %s\n", msgBuf); + (*env)->ThrowNew(env, exClass, msgBuf); + clib_mem_free(msgBuf); + return 0; + } + return (u32) p[0]; +} |