X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50fd860b367f42edfa81ab6e83bcd2379b7e8ec8..51f5efedb7e873fa0c82bdc8bb0aa78ae3e827c7:/src/java/jmsg.c diff --git a/src/java/jmsg.c b/src/java/jmsg.c index 7faed5eaf6..24d141360a 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -17,7 +17,6 @@ #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" @@ -149,10 +148,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 @@ -315,20 +311,6 @@ Java_simgrid_msg_MsgNative_processSelf(JNIEnv * env, jclass cls) 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) @@ -522,7 +504,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,20 +520,19 @@ 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); @@ -793,119 +774,10 @@ Java_simgrid_msg_MsgNative_taskExecute(JNIEnv * env, jclass cls, } /*************************************************************************************** - * 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); -} - - -/*************************************************************************************** - * 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 +792,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 +803,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,12 +822,10 @@ 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) -{ + JNICALL Java_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) { xbt_fifo_item_t item = NULL; m_host_t host = NULL; jobject jhost; @@ -1025,17 +887,6 @@ Java_simgrid_msg_MsgNative_processExit(JNIEnv * env, jclass cls, 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) { @@ -1135,6 +986,11 @@ 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"));