]> rtime.felk.cvut.cz Git - orte.git/blob - orte/libjorte/JORTESubscriptionDestroy.c
New ORTE version 0.3.0 committed
[orte.git] / orte / libjorte / JORTESubscriptionDestroy.c
1 /* JORTESubscriptionDestroy.c */
2
3 /**
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')
8   *
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
13   * @version 0.1
14   *
15   *
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.
20   *
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.
25   *
26   */
27
28
29 #include <stdlib.h>
30 // library header file's path
31 #include "orte.h"
32 // enable TEST_STAGE run level
33 #include "jorte/4all.h"
34 // pregenerated header
35 #include "jorte/org_ocera_orte_Subscription.h"
36 //
37 #include "jorte/typedefs_defines_jorte.h"
38
39 JNIEXPORT jboolean JNICALL
40 Java_org_ocera_orte_Subscription_jORTESubscriptionDestroy
41 (JNIEnv *env, jobject obj, jint dhandle)
42 {
43   int8_t        b;
44   jint          h;
45   jclass        cls;
46   jfieldID      fid;
47
48   printf(":!c: ORTESubscriptionDestroy() called.. \n");
49   // free callBack object
50   cls = (*env)->GetObjectClass(env, obj);
51   fid = (*env)->GetFieldID(env, cls, "callbackContextHandle", "I");
52   h   = (*env)->GetIntField(env, obj, fid);
53   //(*env)->SetIntField(env, obj, fid, 0);
54   printf(":!c: JORTECallbackContext_t handle: %x\n", h);
55   if(h) {
56         //JavaVM *jvm;
57     //jint ret;
58     printf(":c: ORTESubscriptionDestroy() destroying JORTECallbackContext_t.. \n");
59         JORTECallbackContext_t *ctx = (JORTECallbackContext_t*)h;
60     if(ctx->obj) {
61         printf(":!c: deleting ctx->obj\n");
62             (*env)->DeleteLocalRef(env, ctx->obj);
63         }
64     if(ctx->rinfo) {
65         printf(":!c: deleting ctx->rinfo\n");
66             (*env)->DeleteLocalRef(env, ctx->rinfo);
67         }
68
69     free((void*)h);
70   }
71   // call the liborte destroy function
72   printf(":!c: ORTESubscription handle: %x\n", dhandle);
73   if(dhandle) {
74         b = ORTESubscriptionDestroy((ORTESubscription *) dhandle);
75         if(b == ORTE_OK)
76         {
77                 printf(":c: ORTESubscriptionDestroy() succesfuly.. \n");
78                 return 1;
79         }
80         if (b == ORTE_BAD_HANDLE)
81                 printf(":!c: ORTESubscriptionDestroy() failed! (bad subsriber's handle) \n");
82   }
83   return 0;
84 }
85