X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0ff207b9e492129a12c9e892ee4b9de9d70f3a63..2731800aa869070da00bf7d38de0dea3ca71682f:/src/java/jmsg.c diff --git a/src/java/jmsg.c b/src/java/jmsg.c index b18f5dfee8..d7fcb2d92e 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -158,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,8 +177,10 @@ Java_simgrid_msg_MsgNative_processResume(JNIEnv * env, jclass cls, } /* 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 @@ -230,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; } @@ -250,7 +255,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; } @@ -294,14 +299,14 @@ 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; } @@ -318,18 +323,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)); + } @@ -656,7 +665,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; } @@ -688,8 +697,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 @@ -745,9 +756,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); @@ -764,8 +778,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))); } /*************************************************************************************** @@ -821,31 +837,36 @@ Java_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) { JNIEXPORT void JNICALL JNICALL Java_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) { - xbt_fifo_item_t item = NULL; - m_host_t host = NULL; + 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 ")); + } JNIEXPORT jint JNICALL @@ -899,8 +920,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"); @@ -955,7 +976,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); } } @@ -981,26 +1002,8 @@ Java_simgrid_msg_MsgNative_taskSend(JNIEnv * env, jclass cls, (*env)->ReleaseStringUTFChars(env, jalias, alias); - /* 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) - { - - if ( rv == MSG_TRANSFER_FAILURE ) - jxbt_throw_transfer_failure(env,MSG_task_get_name(task),alias); - - else if ( rv == MSG_HOST_FAILURE ) - jxbt_throw_host_failure(env,MSG_task_get_name(task),alias); - - else if ( rv == MSG_TIMEOUT_FAILURE ) - jxbt_throw_time_out_failure(env,MSG_task_get_name(task),alias); - else - 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 @@ -1023,8 +1026,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 @@ -1052,10 +1056,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; } @@ -1141,7 +1143,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();