Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
ac407664715b52e6085408c6ce692d16e41e2216
[simgrid.git] / src / jmsg_application_handler.c
1 /* Upcalls to the Java functions used as callback to the FleXML parser.     */
2
3 /* Copyright (c) 2008, 2009, 2010. The SimGrid Team.
4  * All rights reserved.                                                     */
5
6 /* This program is free software; you can redistribute it and/or modify it
7   * under the terms of the license (GNU LGPL) which comes with this package. */
8
9 #include "jmsg_application_handler.h"
10
11 #include "jmsg.h"
12
13 #include "surf/surfxml_parse.h"
14 #include "jxbt_utilities.h"
15 void japplication_handler_on_start_document(void)
16 {
17   jclass cls;
18   JNIEnv *env = get_current_thread_env();
19   jmethodID id =
20       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
21                               "onStartDocument", "()V");
22
23   if (!id
24       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
25     return;
26
27   (*env)->CallStaticVoidMethod(env, cls, id);
28 }
29
30 void japplication_handler_on_end_document(void)
31 {
32   jclass cls;
33   JNIEnv *env = get_current_thread_env();
34   jmethodID id =
35       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
36                               "onEndDocument", "()V");
37
38   if (!id
39       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
40     return;
41
42   (*env)->CallStaticVoidMethod(env, cls, id);
43 }
44
45 void japplication_handler_on_begin_process(void)
46 {
47   jstring jhostName;
48   jstring jfunction;
49   jstring jstartTime, jkillTime;
50   jclass cls;
51   JNIEnv *env = get_current_thread_env();
52   jmethodID id =
53       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
54                               "onBeginProcess",
55                               "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
56   if (!id
57       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
58     return;
59   jhostName = (jstring) (*env)->NewStringUTF(env, A_surfxml_process_host);
60   jfunction =
61       (jstring) (*env)->NewStringUTF(env, A_surfxml_process_function);
62
63   jstartTime = (jstring) (*env)->NewStringUTF(env, A_surfxml_process_start_time);
64   jkillTime = (jstring) (*env)->NewStringUTF(env, A_surfxml_process_kill_time);
65
66
67   (*env)->CallStaticVoidMethod(env, cls, id, jhostName, jfunction, jstartTime, jkillTime);
68 }
69
70 void japplication_handler_on_process_arg(void)
71 {
72   jstring jarg;
73   jclass cls;
74   JNIEnv *env = get_current_thread_env();
75   jmethodID id =
76       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
77                               "onProcessArg", "(Ljava/lang/String;)V");
78   if (!id
79       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
80     return;
81   jarg = (jstring) (*env)->NewStringUTF(env, A_surfxml_argument_value);
82
83   (*env)->CallStaticVoidMethod(env, cls, id, jarg);
84 }
85
86 void japplication_handler_on_property(void)
87 {
88   jstring jid;
89   jstring jvalue;
90   jclass cls;
91   JNIEnv *env = get_current_thread_env();
92   jmethodID id =
93       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
94                               "onProperty",
95                               "(Ljava/lang/String;Ljava/lang/String;)V");
96   if (!id
97       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
98     return;
99
100   jid = (jstring) (*env)->NewStringUTF(env, A_surfxml_prop_id);
101   jvalue = (jstring) (*env)->NewStringUTF(env, A_surfxml_prop_value);
102   (*env)->CallStaticVoidMethod(env, cls, id, jid, jvalue);
103 }
104
105 void japplication_handler_on_end_process(void)
106 {
107   JNIEnv *env = get_current_thread_env();
108   jclass cls;
109   jmethodID id =
110       jxbt_get_static_smethod(env, "org/simgrid/msg/ApplicationHandler",
111                               "onEndProcess", "()V");
112   if (!id
113       || !(cls = jxbt_get_class(env, "org/simgrid/msg/ApplicationHandler")))
114     return;
115   (*env)->CallStaticVoidMethod(env, cls, id);
116 }