X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/addf1684268e6863fc702567a8b47a090400428f..a4967b47bd0d3722ce21edf140feba2726fb29e5:/src/java/jmsg.c diff --git a/src/java/jmsg.c b/src/java/jmsg.c index 83900cc5ff..1432365b09 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -1,14 +1,11 @@ -/* - * $Id$ - * - * Copyright 2006,2007 Martin Quinson, Malek Cherier All right reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. - * - * This contains the implementation of the wrapper functions used to interface - * the java object with the native functions of the MSG API. - */ +/* Java Wrappers to the MSG API. */ + +/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "msg/msg.h" #include "msg/private.h" #include "simix/private.h" @@ -17,18 +14,13 @@ #include "jmsg_process.h" #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; @@ -55,7 +47,6 @@ static jobject native_to_java_process(m_process_t process) (process->simdata->s_process->context))->jprocess; } - /* * The MSG process connected functions implementation. */ @@ -125,12 +116,12 @@ Java_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls, process, process->simdata, process->simdata->m_host, process->simdata->m_host->simdata, env); - SIMIX_jprocess_create(process->name, - process->simdata->m_host->simdata->smx_host, - /*data */ (void *) process, - jprocess, env, &process->simdata->s_process); - - + process->simdata->s_process = + SIMIX_process_create(process->name, (xbt_main_func_t)jprocess, + /*data */ (void *) process, + process->simdata->m_host->simdata->smx_host->name, + 0, NULL, NULL); + DEBUG1("context created (s_process=%p)", process->simdata->s_process); @@ -149,10 +140,7 @@ Java_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls, process->name); mailbox = MSG_mailbox_new(alias); - MSG_mailbox_set_hostname(mailbox, - process->simdata->m_host->simdata->smx_host->name); - - + } JNIEXPORT void JNICALL @@ -167,8 +155,11 @@ Java_simgrid_msg_MsgNative_processSuspend(JNIEnv * env, jclass cls, } /* try to suspend the process */ - if (MSG_OK != MSG_process_suspend(process)) - jxbt_throw_native(env, xbt_strdup("MSG_process_suspend() failed")); + MSG_error_t rv = MSG_process_suspend(process); + + jxbt_check_res("MSG_process_suspend()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); + } JNIEXPORT void JNICALL @@ -178,13 +169,15 @@ Java_simgrid_msg_MsgNative_processResume(JNIEnv * env, jclass cls, m_process_t process = jprocess_to_native_process(jprocess, env); if (!process) { - jxbt_throw_notbound(env, "process", jprocess); + jxbt_throw_notbound(env,"process", jprocess); return; } /* try to resume the process */ - if (MSG_OK != MSG_process_resume(process)) - jxbt_throw_native(env, xbt_strdup("MSG_process_resume() failed")); + MSG_error_t rv = MSG_process_resume(process); + + jxbt_check_res("MSG_process_resume()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); } JNIEXPORT jboolean JNICALL @@ -238,13 +231,13 @@ Java_simgrid_msg_MsgNative_processGetHost(JNIEnv * env, jclass cls, host = MSG_process_get_host(process); - if (!host->data) { - jxbt_throw_native(env, xbt_strdup("MSG_process_get_host() failed")); + if (!MSG_host_get_data(host)) { + jxbt_throw_jni(env, "MSG_process_get_host() failed"); return NULL; } /* return the global reference to the java host instance */ - return (jobject) host->data; + return (jobject) MSG_host_get_data(host); } @@ -259,7 +252,7 @@ Java_simgrid_msg_MsgNative_processFromPID(JNIEnv * env, jclass cls, jint PID) } if (!native_to_java_process(process)) { - jxbt_throw_native(env, xbt_strdup("SIMIX_process_get_jprocess() failed")); + jxbt_throw_jni(env, "SIMIX_process_get_jprocess() failed"); return NULL; } @@ -303,32 +296,18 @@ Java_simgrid_msg_MsgNative_processSelf(JNIEnv * env, jclass cls) jobject jprocess; if (!process) { - jxbt_throw_native(env, xbt_strdup("MSG_process_self() failed")); + jxbt_throw_jni(env, xbt_strdup("MSG_process_self() failed")); return NULL; } jprocess = native_to_java_process(process); if (!jprocess) - jxbt_throw_native(env, xbt_strdup("SIMIX_process_get_jprocess() failed")); + jxbt_throw_jni(env, xbt_strdup("SIMIX_process_get_jprocess() failed")); return jprocess; } - -JNIEXPORT jint JNICALL -Java_simgrid_msg_MsgNative_processSelfPID(JNIEnv * env, jclass cls) -{ - return (jint) MSG_process_self_PID(); -} - - -JNIEXPORT jint JNICALL -Java_simgrid_msg_MsgNative_processSelfPPID(JNIEnv * env, jclass cls) -{ - return (jint) MSG_process_self_PPID(); -} - JNIEXPORT void JNICALL Java_simgrid_msg_MsgNative_processChangeHost(JNIEnv * env, jclass cls, jobject jhost) @@ -341,18 +320,22 @@ Java_simgrid_msg_MsgNative_processChangeHost(JNIEnv * env, jclass cls, } /* try to change the host of the process */ - if (MSG_OK != MSG_process_change_host(host)) - jxbt_throw_native(env, xbt_strdup("MSG_process_change_host() failed")); + MSG_error_t rv = MSG_process_change_host(host); + + jxbt_check_res("MSG_process_change_host()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); + } JNIEXPORT void JNICALL Java_simgrid_msg_MsgNative_processWaitFor(JNIEnv * env, jclass cls, jdouble seconds) { - if (MSG_OK != MSG_process_sleep((double) seconds)) - jxbt_throw_native(env, - bprintf("MSG_process_change_host(%f) failed", - (double) seconds)); + MSG_error_t rv= MSG_process_sleep((double) seconds); + + jxbt_check_res("MSG_process_sleep()",rv, MSG_HOST_FAILURE, + bprintf("while process was waiting for %f seconds",(double)seconds)); + } @@ -381,7 +364,7 @@ Java_simgrid_msg_MsgNative_hostGetByName(JNIEnv * env, jclass cls, return NULL; } - if (!host->data) { /* native host not associated yet with java host */ + if (!MSG_host_get_data(host)) { /* native host not associated yet with java host */ /* instanciate a new java host */ jhost = jhost_new_instance(env); @@ -405,11 +388,11 @@ Java_simgrid_msg_MsgNative_hostGetByName(JNIEnv * env, jclass cls, /* the native host data field is set with the global reference to the * java host returned by this function */ - host->data = (void *) jhost; + MSG_host_set_data(host,(void *) jhost); } /* return the global reference to the java host instance */ - return (jobject) host->data; + return (jobject) MSG_host_get_data(host); } JNIEXPORT jstring JNICALL @@ -423,7 +406,7 @@ Java_simgrid_msg_MsgNative_hostGetName(JNIEnv * env, jclass cls, return NULL; } - return (*env)->NewStringUTF(env, host->name); + return (*env)->NewStringUTF(env, MSG_host_get_name(host)); } JNIEXPORT jint JNICALL @@ -439,7 +422,7 @@ Java_simgrid_msg_MsgNative_hostSelf(JNIEnv * env, jclass cls) m_host_t host = MSG_host_self(); - if (!host->data) { + if (!MSG_host_get_data(host)) { /* the native host not yet associated with the java host instance */ /* instanciate a new java host instance */ @@ -460,9 +443,9 @@ Java_simgrid_msg_MsgNative_hostSelf(JNIEnv * env, jclass cls) /* Bind & store it */ jhost_bind(jhost, host, env); - host->data = (void *) jhost; + MSG_host_set_data(host,(void *) jhost); } else { - jhost = (jobject) host->data; + jhost = (jobject) MSG_host_get_data(host); } return jhost; @@ -522,7 +505,7 @@ Java_simgrid_msg_MsgNative_taskCreate(JNIEnv * env, jclass cls, jobject jtask, jdouble jmessageSize) { m_task_t task; /* the native task to create */ - const char *name; /* the name of the task */ + const char *name=NULL; /* the name of the task */ if (jcomputeDuration < 0) { jxbt_throw_illegal(env, @@ -538,30 +521,23 @@ Java_simgrid_msg_MsgNative_taskCreate(JNIEnv * env, jclass cls, jobject jtask, return; } - if (!jname) { - jxbt_throw_null(env, xbt_strdup("Task name cannot be null")); - return; + if (jname) { + /* get the C string from the java string */ + name = (*env)->GetStringUTFChars(env, jname, 0); } - /* get the C string from the java string */ - name = (*env)->GetStringUTFChars(env, jname, 0); /* create the task */ task = MSG_task_create(name, (double) jcomputeDuration, (double) jmessageSize, NULL); - (*env)->ReleaseStringUTFChars(env, jname, name); + if (jname) + (*env)->ReleaseStringUTFChars(env, jname, name); /* bind & store the task */ jtask_bind(jtask, task, env); - - /* allocate a new global reference to the java task instance */ - task->data = (void *) jtask_new_global_ref(jtask, env); - - if (!task->data) - jxbt_throw_jni(env, "global ref allocation failed"); - + MSG_task_set_data(task,jtask); } JNIEXPORT void JNICALL @@ -642,9 +618,9 @@ Java_simgrid_msg_MsgNative_parallel_taskCreate(JNIEnv * env, jclass cls, /* associate the java task object and the native task */ jtask_bind(jtask, task, env); - task->data = (void *) jtask; + MSG_task_set_data(task,(void*) jtask); - if (!task->data) + if (!MSG_task_get_data(task)) jxbt_throw_jni(env, "global ref allocation failed"); } @@ -679,12 +655,12 @@ Java_simgrid_msg_MsgNative_taskGetSource(JNIEnv * env, jclass cls, host = MSG_task_get_source(task); - if (!host->data) { - jxbt_throw_native(env, xbt_strdup("MSG_task_get_source() failed")); + if (!MSG_host_get_data(host)) { + jxbt_throw_jni(env, "MSG_task_get_source() failed"); return NULL; } - return (jobject) host->data; + return (jobject) MSG_host_get_data(host); } @@ -699,7 +675,7 @@ Java_simgrid_msg_MsgNative_taskGetName(JNIEnv * env, jclass cls, return NULL; } - return (*env)->NewStringUTF(env, task->name); + return (*env)->NewStringUTF(env, MSG_task_get_name(task)); } JNIEXPORT void JNICALL @@ -712,8 +688,10 @@ Java_simgrid_msg_MsgNative_taskCancel(JNIEnv * env, jclass cls, jobject jtask) return; } - if (MSG_OK != MSG_task_cancel(ptask)) - jxbt_throw_native(env, xbt_strdup("MSG_task_cancel() failed")); + MSG_error_t rv = MSG_task_cancel(ptask); + + jxbt_check_res("MSG_task_cancel()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); } JNIEXPORT jdouble JNICALL @@ -768,13 +746,12 @@ Java_simgrid_msg_MsgNative_taskDestroy(JNIEnv * env, jclass cls, jxbt_throw_notbound(env, "task", task); return; } - jtask = (jobject) task->data; - - if (MSG_OK != MSG_task_destroy(task)) - jxbt_throw_native(env, xbt_strdup("MSG_task_destroy() failed")); - - /* delete the global reference to the java task object */ - jtask_delete_global_ref(jtask, env); + jtask = (jobject) MSG_task_get_data(task); + + MSG_error_t rv = MSG_task_destroy(task); + + jxbt_check_res("MSG_task_destroy()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); } JNIEXPORT void JNICALL @@ -788,124 +765,17 @@ Java_simgrid_msg_MsgNative_taskExecute(JNIEnv * env, jclass cls, return; } - if (MSG_OK != MSG_task_execute(task)) - jxbt_throw_native(env, xbt_strdup("MSG_task_execute() failed")); -} - -/*************************************************************************************** - * The Task reception functions * - ***************************************************************************************/ - -JNIEXPORT jobject JNICALL -Java_simgrid_msg_MsgNative_taskGet(JNIEnv * env, jclass cls, - jint chan_id, jdouble jtimeout, - jobject jhost) -{ - m_task_t task = NULL; - m_host_t host = NULL; - - if (jhost) { - host = jhost_get_native(env, jhost); - if (!host) { - jxbt_throw_notbound(env, "host", jhost); - return NULL; - } - } - - if (MSG_OK != - MSG_task_get_ext(&task, (int) chan_id, (double) jtimeout, host)) { - jxbt_throw_native(env, xbt_strdup("MSG_task_get_ext() failed")); - return NULL; - } - - return (jobject) task->data; -} - - -JNIEXPORT jboolean JNICALL -Java_simgrid_msg_MsgNative_taskProbe(JNIEnv * env, jclass cls, jint chan_id) -{ - return (jboolean) MSG_task_Iprobe(chan_id); -} - -JNIEXPORT jobject JNICALL -Java_simgrid_msg_MsgNative_taskGetCommunicatingProcess(JNIEnv * env, - jclass cls, - jint chan_id) -{ - int pid = MSG_task_probe_from(chan_id); - if (pid >= 0) - return Java_simgrid_msg_MsgNative_processFromPID(env, cls, (jint) pid); - - return NULL; -} - -JNIEXPORT jint JNICALL -Java_simgrid_msg_MsgNative_taskProbeHost(JNIEnv * env, jclass cls, - jobject jhost, jint chan_id) -{ - m_host_t host = jhost_get_native(env, jhost); - - if (!host) { - jxbt_throw_notbound(env, "host", jhost); - return -1; - } - - return (jint) MSG_task_probe_from_host(chan_id, host); + MSG_error_t rv = MSG_task_execute(task); + + jxbt_check_res("MSG_task_execute()",rv,MSG_HOST_FAILURE|MSG_TASK_CANCELLED, + bprintf("while executing task %s", MSG_task_get_name(task))); } - /*************************************************************************************** - * The Task reception functions * + * Unsortable functions * ***************************************************************************************/ -JNIEXPORT void JNICALL -Java_simgrid_msg_MsgNative_hostPut(JNIEnv * env, jclass cls, - jobject jhost, jint chan_id, jobject jtask, - jdouble jtimeout) -{ - m_task_t task = jtask_to_native_task(jtask, env); - m_host_t host = jhost_get_native(env, jhost); - - if (!host) { - jxbt_throw_notbound(env, "host", jhost); - return; - } - if (!task) { - jxbt_throw_notbound(env, "task", jtask); - return; - } - - if (MSG_OK != - MSG_task_put_with_timeout(task, host, (int) chan_id, (double) jtimeout)) - jxbt_throw_native(env, xbt_strdup("MSG_task_put_with_timeout() failed")); -} - - - -JNIEXPORT void JNICALL -Java_simgrid_msg_MsgNative_hostPutBounded(JNIEnv * env, jclass cls, - jobject jhost, jint chan_id, - jobject jtask, jdouble jmaxRate) -{ - m_task_t task = jtask_to_native_task(jtask, env); - m_host_t host = jhost_get_native(env, jhost); - - if (!host) { - jxbt_throw_notbound(env, "host", jhost); - return; - } - if (!task) { - jxbt_throw_notbound(env, "task", jtask); - return; - } - - if (MSG_OK != - MSG_task_put_bounded(task, host, (int) chan_id, (double) jmaxRate)) - jxbt_throw_native(env, xbt_strdup("MSG_task_put_bounded() failed")); -} - JNIEXPORT jint JNICALL Java_simgrid_msg_Msg_getErrCode(JNIEnv * env, jclass cls) { @@ -920,9 +790,7 @@ Java_simgrid_msg_Msg_getClock(JNIEnv * env, jclass cls) JNIEXPORT void JNICALL -Java_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) -{ - +Java_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) { char **argv = NULL; int index; int argc = 0; @@ -933,23 +801,17 @@ Java_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) argc = (int) (*env)->GetArrayLength(env, jargs); argc++; - argv = xbt_new0(char *, argc); - argv[0] = strdup("java"); for (index = 0; index < argc - 1; index++) { jval = (jstring) (*env)->GetObjectArrayElement(env, jargs, index); - tmp = (*env)->GetStringUTFChars(env, jval, 0); - argv[index + 1] = strdup(tmp); - (*env)->ReleaseStringUTFChars(env, jval, tmp); } MSG_global_init(&argc, argv); - MSG_set_channel_number(10); /* FIXME: this should not be fixed statically */ SIMIX_context_select_factory("java"); for (index = 0; index < argc; index++) @@ -958,36 +820,39 @@ Java_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) free(argv); (*env)->GetJavaVM(env, &__java_vm); - } JNIEXPORT void JNICALL - JNICALL Java_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) -{ - xbt_fifo_item_t item = NULL; - m_host_t host = NULL; + JNICALL Java_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) { + MSG_error_t rv; + int index;//xbt_fifo_item_t item = NULL; + m_host_t *hosts; jobject jhost; /* Run everything */ - if (MSG_OK != MSG_main()) - jxbt_throw_native(env, xbt_strdup("MSG_main() failed")); + rv= MSG_main(); + jxbt_check_res("MSG_main()",rv,MSG_OK, + bprintf("unexpected error : MSG_main() failed .. please report this bug ")); DEBUG0 ("MSG_main finished. Bail out before cleanup since there is a bug in this part."); DEBUG0("Clean java world"); /* Cleanup java hosts */ - xbt_fifo_foreach(msg_global->host, item, host, m_host_t) { - jhost = (jobject) host->data; + hosts = MSG_get_host_table(); + for (index=0;indexdata; + if(jhost) + jhost_unref(env,jhost); - if (jhost) - jhost_unref(env, jhost); } DEBUG0("Clean native world"); /* cleanup native stuff */ - if (MSG_OK != MSG_clean()) - jxbt_throw_native(env, xbt_strdup("MSG_main() failed")); + rv = MSG_OK != MSG_clean(); + jxbt_check_res("MSG_clean()",rv,MSG_OK, + bprintf("unexpected error : MSG_clean() failed .. please report this bug ")); } @@ -1022,20 +887,9 @@ Java_simgrid_msg_MsgNative_processExit(JNIEnv * env, jclass cls, return; } - SIMIX_context_stop(0); + SIMIX_context_stop(SIMIX_process_self()->context); } -JNIEXPORT void JNICALL -Java_simgrid_msg_Msg_pajeOutput(JNIEnv * env, jclass cls, jstring jpajeFile) -{ - const char *pajeFile = (*env)->GetStringUTFChars(env, jpajeFile, 0); - - MSG_paje_output(pajeFile); - - (*env)->ReleaseStringUTFChars(env, jpajeFile, pajeFile); -} - - JNIEXPORT void JNICALL Java_simgrid_msg_Msg_info(JNIEnv * env, jclass cls, jstring js) { @@ -1053,8 +907,8 @@ Java_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) jstring jname; m_host_t host; - int count = xbt_fifo_size(msg_global->host); - m_host_t *table = (m_host_t *) xbt_fifo_to_array(msg_global->host); + int count = MSG_get_host_number(); + m_host_t *table = MSG_get_host_table(); jclass cls = jxbt_get_class(env, "simgrid/msg/Host"); @@ -1071,10 +925,10 @@ Java_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) for (index = 0; index < count; index++) { host = table[index]; - jhost = (jobject) (host->data); + jhost = (jobject) (MSG_host_get_data(host)); if (!jhost) { - jname = (*env)->NewStringUTF(env, host->name); + jname = (*env)->NewStringUTF(env, MSG_host_get_name(host)); jhost = Java_simgrid_msg_MsgNative_hostGetByName(env, cls_arg, jname); /* FIXME: leak of jname ? */ @@ -1109,7 +963,7 @@ Java_simgrid_msg_MsgNative_selectContextFactory(JNIEnv * env, jclass class, if (errmsg) { char *thrown = bprintf("xbt_select_context_factory() failed: %s", errmsg); free(errmsg); - jxbt_throw_native(env, thrown); + jxbt_throw_jni(env, thrown); } } @@ -1131,13 +985,14 @@ Java_simgrid_msg_MsgNative_taskSend(JNIEnv * env, jclass cls, return; } + /* Pass a global ref to the Jtask into the Ctask so that the receiver can use it */ + MSG_task_set_data(task,(void *) (*env)->NewGlobalRef(env, jtask)); rv = MSG_task_send_with_timeout(task, alias, (double) jtimeout); (*env)->ReleaseStringUTFChars(env, jalias, alias); - if (MSG_OK != rv) - jxbt_throw_native(env, xbt_strdup("MSG_task_send_with_timeout() failed")); - + jxbt_check_res("MSG_task_send_with_timeout()",rv, MSG_HOST_FAILURE|MSG_TRANSFER_FAILURE|MSG_TIMEOUT, + bprintf("while sending task %s to mailbox %s", MSG_task_get_name(task),alias)); } JNIEXPORT void JNICALL @@ -1156,12 +1011,15 @@ Java_simgrid_msg_MsgNative_taskSendBounded(JNIEnv * env, jclass cls, alias = (*env)->GetStringUTFChars(env, jalias, 0); + /* Pass a global ref to the Jtask into the Ctask so that the receiver can use it */ + MSG_task_set_data(task,(void *) (*env)->NewGlobalRef(env, jtask)); rv = MSG_task_send_bounded(task, alias, (double) jmaxRate); (*env)->ReleaseStringUTFChars(env, jalias, alias); - if (MSG_OK != rv) - jxbt_throw_native(env, xbt_strdup("MSG_task_send_bounded() failed")); + jxbt_check_res("MSG_task_send_bounded()",rv, MSG_HOST_FAILURE|MSG_TRANSFER_FAILURE|MSG_TIMEOUT, + bprintf("while sending task %s to mailbox %s with max rate %f", MSG_task_get_name(task),alias,(double)jmaxRate)); + } JNIEXPORT jobject JNICALL @@ -1172,6 +1030,7 @@ Java_simgrid_msg_MsgNative_taskReceive(JNIEnv * env, jclass cls, MSG_error_t rv; m_task_t task = NULL; m_host_t host = NULL; + jobject jtask_global, jtask_local; const char *alias; if (jhost) { @@ -1186,15 +1045,19 @@ Java_simgrid_msg_MsgNative_taskReceive(JNIEnv * env, jclass cls, alias = (*env)->GetStringUTFChars(env, jalias, 0); rv = MSG_task_receive_ext(&task, alias, (double) jtimeout, host); + jtask_global = MSG_task_get_data(task); + + /* Convert the global ref into a local ref so that the JVM can free the stuff */ + jtask_local = (*env)->NewLocalRef(env, jtask_global); + (*env)->DeleteGlobalRef(env, jtask_global); + MSG_task_set_data(task,NULL); (*env)->ReleaseStringUTFChars(env, jalias, alias); - if (MSG_OK != rv) { - jxbt_throw_native(env, xbt_strdup("MSG_task_receive_ext() failed")); - return NULL; - } + jxbt_check_res("MSG_task_receive_ext()",rv, MSG_HOST_FAILURE|MSG_TRANSFER_FAILURE|MSG_TIMEOUT, + bprintf("while receiving from mailbox %s",alias)); - return (jobject) task->data; + return (jobject) jtask_local; } JNIEXPORT jboolean JNICALL @@ -1218,7 +1081,6 @@ JNIEXPORT jint JNICALL Java_simgrid_msg_MsgNative_taskListenFromHost(JNIEnv * env, jclass cls, jstring jalias, jobject jhost) { - int rv; const char *alias; @@ -1228,7 +1090,6 @@ Java_simgrid_msg_MsgNative_taskListenFromHost(JNIEnv * env, jclass cls, jxbt_throw_notbound(env, "host", jhost); return -1; } - alias = (*env)->GetStringUTFChars(env, jalias, 0); rv = MSG_task_listen_from_host(alias, host); @@ -1280,7 +1141,7 @@ Java_simgrid_msg_Msg_deployApplication(JNIEnv * env, jclass cls, japplication_handler_on_start_document(); if (surf_parse()) - jxbt_throw_native(env, xbt_strdup("surf_parse() failed")); + jxbt_throw_jni(env,"surf_parse() failed"); surf_parse_close();