]> rtime.felk.cvut.cz Git - orte.git/blob - orte/libjorte/createAppInfo.c
69f17614f340f8955886f40cf3f7ac79fd5f5f6a
[orte.git] / orte / libjorte / createAppInfo.c
1 /* createAppInfo.c  */
2
3 #include <jni.h>
4 #include "orte.h"
5 #include "jorte/4all.h"
6 #include "jorte/jorte_protos_api.h"
7
8 jobject createAppInfo(JNIEnv *env, const ORTEAppInfo *ainfo)
9 {
10   jclass    cls;
11   jclass    cls_tmp;
12   jobject   obj;
13   jobject   obj_tmp;
14   jfieldID  fid;
15   jmethodID mid;
16   //
17   int flag_ok = 0;
18
19   do
20   {
21     // find cls
22     cls = (*env)->FindClass(env, "org/ocera/orte/types/AppInfo");
23     if(cls == 0)
24     {
25       #ifdef TEST_STAGE
26         printf(":!c: cls = NULL \n");
27       #endif
28       break;
29     }
30     // call object constructor
31     mid = (*env)->GetMethodID(env, cls, "<init>", "()V");
32     if(mid == 0)
33     {
34       #ifdef TEST_STAGE
35         printf(":!c: constructor failed! \n");
36       #endif
37       break;
38     }
39     // create new object
40     obj = (*env)->NewObject(env, cls, mid);
41     if(obj == 0)
42     {
43       #ifdef TEST_STAGE
44         printf(":!c: obj = NULL \n");
45       #endif
46       break;
47     }
48     // field ID - hostID
49     fid = (*env)->GetFieldID(env,cls,"hostId","J");
50     if(fid == 0)
51     {
52       #ifdef TEST_STAGE
53         printf(":!c: fid = NULL \n");
54       #endif
55       break;
56     }
57     #ifdef TEST_STAGE
58        printf(":c: ainfo.hostId = %d \n",ainfo->hostId);
59     #endif
60     (*env)->SetLongField(env,
61                          obj,
62                          fid,
63                          (jlong) ainfo->hostId);
64
65     // field ID - appID
66     fid = (*env)->GetFieldID(env,cls,"appId","J");
67     if(fid == 0)
68     {
69       #ifdef TEST_STAGE
70         printf(":!c: fid = NULL \n");
71       #endif
72       break;
73     }
74     #ifdef TEST_STAGE
75        printf(":c: ainfo.appId = %d \n",ainfo->appId);
76     #endif
77     (*env)->SetLongField(env,
78                          obj,
79                          fid,
80                          (jlong) ainfo->appId);
81     // field ID - unicastIPAddressTemp
82     fid = (*env)->GetFieldID(env,cls,"unicastIPAddressTemp","J");
83     if(fid == 0)
84     {
85       #ifdef TEST_STAGE
86         printf(":!c: fid uniIPAddrTemp = NULL \n");
87       #endif
88       break;
89     }
90     #ifdef TEST_STAGE
91        printf(":c: ainfo.unicastIPAddressList = %d \n",ainfo->unicastIPAddressList);
92     #endif
93     (*env)->SetLongField(env,
94                          obj,
95                          fid,
96                          (jlong) *ainfo->unicastIPAddressList);
97     // field ID - unicastIPcount
98     fid = (*env)->GetFieldID(env,cls,"unicastIPcount","B");
99     if(fid == 0)
100     {
101       #ifdef TEST_STAGE
102         printf(":!c: fid = NULL \n");
103       #endif
104       break;
105     }
106     #ifdef TEST_STAGE
107        printf(":c: ainfo.unicastIPcount = %d \n",
108               ainfo->unicastIPAddressCount);
109     #endif
110     (*env)->SetByteField(env,
111                          obj,
112                          fid,
113                          (jbyte) ainfo->unicastIPAddressCount);
114     // field ID - multicastIPAddressTemp
115     fid = (*env)->GetFieldID(env,cls,"mettaTrafficMulticastIPAddressTemp","J");
116     if(fid == 0)
117     {
118       #ifdef TEST_STAGE
119         printf(":!c: fid multiIPAddrTemp = NULL \n");
120       #endif
121       break;
122     }
123     #ifdef TEST_STAGE
124        printf(":c: ainfo.multicastIPAddressList = %d \n",
125               ainfo->metatrafficMulticastIPAddressList);
126     #endif
127     (*env)->SetLongField(env,
128                          obj,
129                          fid,
130                          (jlong) *ainfo->metatrafficMulticastIPAddressList);
131     // field ID - multicastIPcount
132     fid = (*env)->GetFieldID(env,cls,"multicastIPcount","B");
133     if(fid == 0)
134     {
135       #ifdef TEST_STAGE
136         printf(":!c: fid = NULL \n");
137       #endif
138       break;
139     }
140     #ifdef TEST_STAGE
141        printf(":c: ainfo.metatrafficMulticastIPAddressCount = %d \n",
142               ainfo->metatrafficMulticastIPAddressCount);
143     #endif
144     (*env)->SetByteField(env,
145                          obj,
146                          fid,
147                          (jbyte) ainfo->metatrafficMulticastIPAddressCount);
148
149     // field ID - mettatraficUnicastPort
150     fid = (*env)->GetFieldID(env,cls,"metatrafficUniPort","J");
151     if(fid == 0)
152     {
153       #ifdef TEST_STAGE
154         printf(":!c: fid = NULL \n");
155       #endif
156       break;
157     }
158     #ifdef TEST_STAGE
159        printf(":c: ainfo.metatrafficUnicastPort = %d \n",
160               ainfo->metatrafficUnicastPort);
161     #endif
162     (*env)->SetLongField(env,
163                          obj,
164                          fid,
165                          (jlong) ainfo->metatrafficUnicastPort);
166
167     // field ID - userdataUnicastPort
168     fid = (*env)->GetFieldID(env,cls,"userdataUniPort","J");
169     if(fid == 0)
170     {
171       #ifdef TEST_STAGE
172         printf(":!c: fid = NULL \n");
173       #endif
174       break;
175     }
176     #ifdef TEST_STAGE
177        printf(":c: ainfo.userdataUnicastPort = %d \n",
178               ainfo->userdataUnicastPort);
179     #endif
180     (*env)->SetLongField(env,
181                          obj,
182                          fid,
183                          (jlong) ainfo->userdataUnicastPort);
184
185     // find cls - VendorID
186     cls_tmp = (*env)->FindClass(env, "org/ocera/orte/types/VendorId");
187     if(cls_tmp == 0)
188     {
189       #ifdef TEST_STAGE
190         printf(":!c: cls_tmp = NULL \n");
191       #endif
192       break;
193     }
194     // call object constructor
195     mid = (*env)->GetMethodID(env,
196                               cls_tmp,
197                               "<init>",
198                               "(BB)V");
199     if(mid == 0)
200     {
201       #ifdef TEST_STAGE
202         printf(":!c: constructor failed! \n");
203       #endif
204       break;
205     }
206     // create new object
207     obj_tmp = (*env)->NewObject(env,
208                                 cls_tmp,
209                                 mid,
210                                 ainfo->vendorId.major,
211                                 ainfo->vendorId.minor);
212     if(obj_tmp == 0)
213     {
214       #ifdef TEST_STAGE
215         printf(":!c: obj = NULL \n");
216       #endif
217       break;
218     }
219     // set AppInfo's field
220     fid = (*env)->GetFieldID(env,
221                              cls,
222                              "vendorId",
223                              "Lorg/ocera/orte/types/VendorId;");
224     if(fid == 0)
225     {
226       #ifdef TEST_STAGE
227         printf(":!c: fid = NULL \n");
228       #endif
229       break;
230     }
231     #ifdef TEST_STAGE
232        printf(":c: ainfo.vendorId: major = %d, minor = %d \n",
233               ainfo->vendorId.major, ainfo->vendorId.minor);
234     #endif
235     (*env)->SetObjectField(env,
236                            obj,
237                            fid,
238                            obj_tmp);
239
240     // find cls - VendorID
241     cls_tmp = (*env)->FindClass(env, "org/ocera/orte/types/ProtocolVersion");
242     if(cls_tmp == 0)
243     {
244       #ifdef TEST_STAGE
245         printf(":!c: cls_tmp = NULL \n");
246       #endif
247       break;
248     }
249     // call object constructor
250     mid = (*env)->GetMethodID(env,
251                               cls_tmp,
252                               "<init>",
253                               "(BB)V");
254     if(mid == 0)
255     {
256       #ifdef TEST_STAGE
257         printf(":!c: constructor failed! \n");
258       #endif
259       break;
260     }
261     // create new object
262     obj_tmp = (*env)->NewObject(env,
263                                 cls_tmp,
264                                 mid,
265                                 ainfo->protocolVersion.major,
266                                 ainfo->protocolVersion.minor);
267     if(obj_tmp == 0)
268     {
269       #ifdef TEST_STAGE
270         printf(":!c: obj = NULL \n");
271       #endif
272       break;
273     }
274     // set AppInfo's field
275     fid = (*env)->GetFieldID(env,
276                              cls,
277                              "protocolVersion",
278                              "Lorg/ocera/orte/types/ProtocolVersion;");
279     if(fid == 0)
280     {
281       #ifdef TEST_STAGE
282         printf(":!c: fid = NULL \n");
283       #endif
284       break;
285     }
286     #ifdef TEST_STAGE
287        printf(":c: ainfo.protocolVersion: major = %d, minor = %d \n",
288               ainfo->protocolVersion.major, ainfo->protocolVersion.minor);
289     #endif
290     (*env)->SetObjectField(env,
291                            obj,
292                            fid,
293                            obj_tmp);
294
295     flag_ok = 1;
296   } while(0);
297
298   if(!flag_ok)
299   {
300     //detach...()
301     return NULL;
302   }
303
304 return obj;
305 }