X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/51f5efedb7e873fa0c82bdc8bb0aa78ae3e827c7..0c5058e854366019f429316340bff257dd01cbb4:/src/java/jmsg.c diff --git a/src/java/jmsg.c b/src/java/jmsg.c index 24d141360a..0d9ea2375c 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -20,14 +20,10 @@ #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; @@ -54,7 +50,6 @@ static jobject native_to_java_process(m_process_t process) (process->simdata->s_process->context))->jprocess; } - /* * The MSG process connected functions implementation. */ @@ -163,8 +158,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 @@ -174,13 +172,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 @@ -235,7 +235,7 @@ 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")); + jxbt_throw_jni(env, "MSG_process_get_host() failed"); return NULL; } @@ -331,10 +331,11 @@ 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)); + } @@ -661,7 +662,7 @@ 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")); + jxbt_throw_jni(env, "MSG_task_get_source() failed"); return NULL; } @@ -693,8 +694,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 @@ -750,9 +753,12 @@ Java_simgrid_msg_MsgNative_taskDestroy(JNIEnv * env, jclass cls, return; } jtask = (jobject) task->data; + + MSG_error_t rv = MSG_task_destroy(task); + + jxbt_check_res("MSG_task_destroy()",rv,MSG_OK, + bprintf("unexpected error , please report this bug")); - 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); @@ -769,8 +775,10 @@ 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")); + 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))); } /*************************************************************************************** @@ -986,14 +994,8 @@ Java_simgrid_msg_MsgNative_taskSend(JNIEnv * env, jclass cls, (*env)->ReleaseStringUTFChars(env, jalias, alias); - /* FIXME throw the right exception corresponding to HostFailureException, TransferFailureException, TimeoutFailureException - * Note: these exceptions must be created beforehand - * then, you want to create some functions like jxbt_throw_notbound() - * then, you must declare in the MsgNative stuff that these native functions can throw these exceptions - */ - 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 @@ -1016,8 +1018,9 @@ Java_simgrid_msg_MsgNative_taskSendBounded(JNIEnv * env, jclass cls, (*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 @@ -1045,10 +1048,8 @@ Java_simgrid_msg_MsgNative_taskReceive(JNIEnv * env, jclass cls, (*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; } @@ -1074,7 +1075,6 @@ JNIEXPORT jint JNICALL Java_simgrid_msg_MsgNative_taskListenFromHost(JNIEnv * env, jclass cls, jstring jalias, jobject jhost) { - int rv; const char *alias; @@ -1084,7 +1084,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);