]> rtime.felk.cvut.cz Git - orte.git/blob - orte/libjorte/JORTEDomainAppDestroy.c
Reformat the sources with orte/uncrustify script
[orte.git] / orte / libjorte / JORTEDomainAppDestroy.c
1 /* JORTEDomainAppDestroy.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 )
12   * @author Project ORTE - OCERA Real Time Ethernet (www.ocera.org)
13   * @author dedication to Kj
14   * @version 0.1
15   *
16   *
17   * This program is free software; you can redistribute it and/or modify
18   * it under the terms of the GNU General Public License as published by
19   * the Free Software Foundation; either version 2 of the License, or
20   * (at your option) any later version.
21   *
22   * This program is distributed in the hope that it will be useful,
23   * but WITHOUT ANY WARRANTY; without even the implied warranty of
24   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25   * GNU General Public License for more details.
26   *
27   */
28
29 #include <stdlib.h>
30 // origin orte headers
31 #include "orte.h"
32 // pregenerated header
33 #include "jorte/org_ocera_orte_DomainApp.h"
34 #include "jorte/4all.h"
35 #include "jorte/jorte_typedefs_defines.h"
36
37 JNIEXPORT jboolean JNICALL
38 Java_org_ocera_orte_DomainApp_jORTEDomainAppDestroy
39   (JNIEnv *env, jobject obj, jlong dhandle)
40 {
41   jlong       h;
42   jclass      cls;
43   jfieldID    fid;
44   int         flag_ok = 0;
45
46   do {
47     // check domain handle
48     if (dhandle == 0) {
49       printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
50       break;
51     }
52     // call ORTE function
53     if (!ORTEDomainAppDestroy((ORTEDomain *)dhandle)) {
54       #ifdef TEST_STAGE
55       printf(":c: ORTEDomainAppDestroy failed.. \n");
56       #endif
57       break;
58     }
59
60     // free domainEvents object
61     // find cls
62     cls = (*env)->GetObjectClass(env, obj);
63     if (cls == 0) {
64       #ifdef TEST_STAGE
65       printf(":!c: cls = NULL! \n");
66       #endif
67       break;
68     }
69     // fieldID
70     fid = (*env)->GetFieldID(env,
71                              cls,
72                              "domainEventsContextHandle",
73                              "J");
74     if (fid == 0) {
75      #ifdef TEST_STAGE
76       printf(":!c: fid = NULL! \n");
77      #endif
78       break;
79     }
80     // get value
81     h = (*env)->GetLongField(env, obj, fid);
82     if (h) {
83       JORTEDomainEventsContext_t *ctx = (JORTEDomainEventsContext_t *)h;
84       if (ctx->obj_de) {
85         #ifdef TEST_STAGE
86         printf(":c: deleting ctx->obj_de \n");
87         #endif
88         (*env)->DeleteGlobalRef(env, ctx->obj_de);
89       }
90       //
91       free((void *)h);
92     }
93     flag_ok = 1;
94   } while (0);
95
96   if (flag_ok == 0) {
97     printf(":!c: ORTEDomainAppDestroy failed!  \n");
98     return 0;
99   }
100
101   return 1;
102 }