]> rtime.felk.cvut.cz Git - orte.git/blob - orte/libjorte/JORTEDomainMgrDestroy.c
JORTE: ignore 'int-to-pointer' and 'pointer-to-int' compiler warnings
[orte.git] / orte / libjorte / JORTEDomainMgrDestroy.c
1 /* JORTEDomainMgrDestroy.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
11 .cvut.cz)
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_DomainMgr.h"
34 #include "jorte/4all.h"
35 #include "jorte/jorte_typedefs_defines.h"
36
37
38 JNIEXPORT jboolean JNICALL
39 Java_org_ocera_orte_DomainMgr_jORTEDomainMgrDestroy
40 (JNIEnv *env, jobject obj, jlong dhandle)
41 {
42   jlong       h;
43   jclass      cls;
44   jfieldID    fid;
45   int         flag_ok = 0;
46
47   do {
48     // check domain handle
49     if (dhandle == 0)
50     {
51       printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
52       break;
53     }
54     // call ORTE function
55     if(!ORTEDomainMgrDestroy((ORTEDomain *) dhandle))
56     {
57       #ifdef TEST_STAGE
58         printf(":c: mgrDomain destroy failed.. \n");
59       #endif
60       break;
61     }
62     // free domainEvents object
63     // find cls
64     cls = (*env)->GetObjectClass(env, obj);
65     if(cls == 0)
66     {
67       #ifdef TEST_STAGE
68         printf(":!c: cls = NULL! \n");
69       #endif
70       break;
71     }
72     // fieldID
73     fid = (*env)->GetFieldID(env,
74                              cls,
75                              "domainEventsContextHandle",
76                              "J");
77     if(fid == 0)
78     {
79      #ifdef TEST_STAGE
80        printf(":!c: fid = NULL! \n");
81      #endif
82      break;
83     }
84     // get value
85     h = (*env)->GetLongField(env, obj, fid);
86     if(h)
87     {
88       JORTEDomainEventsContext_t *ctx = (JORTEDomainEventsContext_t*)h;
89       if(ctx->obj_de)
90       {
91         #ifdef TEST_STAGE
92           printf(":c: deleting ctx->obj_de \n");
93         #endif
94         (*env)->DeleteGlobalRef(env, ctx->obj_de);
95       }
96       //
97       free((void*)h);
98     }
99     flag_ok = 1;
100   } while(0);
101
102   if(flag_ok == 0)
103   {
104     printf(":!c: ORTEDomainMgrDestroy failed!  \n");
105     return 0;
106   }
107
108   return 1;
109 }