#include "jmsg_host.h"
#include "jmsg_task.h"
#include "jmsg_channel.h"
+#include "jmsg_application_handler.h"
#include "jxbt_utilities.h"
+
#include "jmsg.h"
#include "msg/mailbox.h"
+#include "surf/surfxml_parse.h"
+
+
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
static JavaVM * __java_vm = NULL;
SIMIX_jprocess_create(process->name,
process->simdata->m_host->simdata->smx_host,
/*data*/ (void*)process,
- jprocess,env,
+ jprocess,
+ env,
&process->simdata->s_process);
}
JNIEXPORT void JNICALL
-Java_simgrid_msg_MsgNative_processChangeHost(JNIEnv* env, jclass cls, jobject jprocess, jobject jhost){
+Java_simgrid_msg_MsgNative_processChangeHost(JNIEnv* env, jclass cls, jobject jhost){
m_host_t host = jhost_get_native(env,jhost);
- m_process_t process = jprocess_to_native_process(jprocess,env);
-
- if(!process) {
- jxbt_throw_notbound(env,"process",jprocess);
- return;
- }
if(!host) {
jxbt_throw_notbound(env,"host",jhost);
}
/* try to change the host of the process */
- if(MSG_OK != MSG_process_change_host(process,host))
+ if(MSG_OK != MSG_process_change_host(host))
jxbt_throw_native(env, xbt_strdup("MSG_process_change_host() failed"));
}
return (jint)rv;
}
+
+JNIEXPORT void JNICALL
+Java_simgrid_msg_Msg_deployApplication(JNIEnv* env, jclass cls,jstring jdeploymentFile) {
+
+ const char* deploymentFile = (*env)->GetStringUTFChars(env, jdeploymentFile, 0);
+
+ surf_parse_reset_parser();
+
+ surfxml_add_callback(STag_surfxml_process_cb_list, japplication_handler_on_begin_process);
+
+ surfxml_add_callback(ETag_surfxml_argument_cb_list, japplication_handler_on_process_arg);
+
+ surfxml_add_callback(STag_surfxml_prop_cb_list, japplication_handler_on_property);
+
+ surfxml_add_callback(ETag_surfxml_process_cb_list, japplication_handler_on_end_process);
+
+ surf_parse_open(deploymentFile);
+
+ japplication_handler_on_start_document();
+
+ if(surf_parse())
+ jxbt_throw_native(env, xbt_strdup("surf_parse() failed"));
+
+ surf_parse_close();
+
+ japplication_handler_on_end_document();
+
+ (*env)->ReleaseStringUTFChars(env, jdeploymentFile, deploymentFile);
+}