]> rtime.felk.cvut.cz Git - orte.git/blob - orte/libjorte/JORTEPublicationWaitForSubscriptions.c
improved JAVA interface from Lukas, update makefiles from msvc from Jan
[orte.git] / orte / libjorte / JORTEPublicationWaitForSubscriptions.c
1 /* JORTEPublicationWaitForSubscriptions.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 #include <string.h>
29 #include <stdlib.h>
30 // library header file's path
31 #include "orte.h"
32 // getNtpTime function
33 #include "jorte/jorte_protos_api.h"
34 // enable TEST_STAGE run level
35 #include "jorte/4all.h"
36 // pregenerated header
37 #include "jorte/org_ocera_orte_Publication.h"
38
39
40 JNIEXPORT jint JNICALL
41 Java_org_ocera_orte_Publication_jORTEPublicationWaitForSubscriptions
42 (JNIEnv *env, jobject obj, jint j_appDomain_handle,
43  jobject obj_ntpT, jlong jretries, jlong jnoSubscriptions)
44 {
45   int            i;
46   NtpTime        wait;
47
48   #ifdef TEST_STAGE
49     printf(":c: jORTEPublicationWaitForSubscriptions called.. \n");
50   #endif
51
52   wait = getNtpTime(env, obj_ntpT);
53   #ifdef TEST_STAGE
54     printf(":c: check: wait: sec = %d, fract = %d  \n",
55            wait.seconds, wait.fraction);
56   #endif
57
58   // calling original native method
59   i = ORTEPublicationWaitForSubscriptions((ORTEPublication *) j_appDomain_handle,
60                                           wait,
61                                           (unsigned int) jretries,
62                                           (unsigned int) jnoSubscriptions);
63   if (i == ORTE_BAD_HANDLE)
64   {
65     printf(":c!: wait for subscription failed! [bad sub handle] \n");
66     return ORTE_BAD_HANDLE;
67   }
68   if (i == ORTE_TIMEOUT)
69   {
70     printf(":c!: wait for subscriptions - timeout! [number of subscriptions exhausted] \n");
71     return ORTE_TIMEOUT;
72   }
73   if (i == ORTE_OK);
74   return ORTE_OK;
75 }