1 /* JORTESubscriptionDestroy.c */
4 * This code provides conversion between JAVA a C environments.
5 * The C functions are calling here and results are send to JAVA
6 * native functions. It uses the header pregenerated by JAVA
7 * (by command 'javah -jni class_with_native_function')
9 * @author Lukas Pokorny (lukas_pokorny@centrum.cz)
10 * @author CTU FEE Prague - Department of Control Engineering (dce.felk.cvut.cz)
11 * @author Project ORTE - OCERA Real Time Ethernet (www.ocera.org)
12 * @author dedication to Kj
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
30 // library header file's path
32 // enable TEST_STAGE run level
33 #include "jorte/4all.h"
34 // pregenerated header
35 #include "jorte/org_ocera_orte_Subscription.h"
37 #include "jorte/jorte_typedefs_defines.h"
39 JNIEXPORT jboolean JNICALL
40 Java_org_ocera_orte_Subscription_jORTESubscriptionDestroy
41 (JNIEnv *env, jobject obj, jlong subs_handle)
50 printf(":c: ORTESubscriptionDestroy() called.. \n");
58 b = ORTESubscriptionDestroy((ORTESubscription *) subs_handle);
59 if (b == ORTE_BAD_HANDLE)
61 printf(":!c: subscription destroy failed! [bad sub handle] \n");
65 printf(":c: subscription destroy succesfuly.. \n");
69 // free callBack object
71 cls = (*env)->GetObjectClass(env, obj);
75 printf(":!c: cls = NULL! \n");
80 fid = (*env)->GetFieldID(env,
82 "callbackContextHandle",
87 printf(":!c: fid = NULL! \n");
92 h = (*env)->GetLongField(env, obj, fid);
97 JORTECallbackContext_t *ctx = *((JORTECallbackContext_t**)h);
98 *((JORTECallbackContext_t**)h) = 0;
102 printf(":c: deleting ctx->obj \n");
104 (*env)->DeleteGlobalRef(env, ctx->obj);
109 printf(":c: deleting ctx->rinfo\n");
111 (*env)->DeleteGlobalRef(env, ctx->rinfo);
116 printf(":c: deleting ctx->msg\n");
118 (*env)->DeleteGlobalRef(env, ctx->msg);
123 printf(":c: deleting ctx->obj_buf\n");
125 (*env)->DeleteGlobalRef(env, ctx->obj_buf);
135 printf(":c: flag_ok = %d \n",flag_ok);