X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c1a801890b53e18c22319f0d875db0f75711776f..8e72922a58f5c591eb71fde589d362f6669a7a0f:/src/jmsg.c diff --git a/src/jmsg.c b/src/jmsg.c index 31ae4d696c..87706b50a0 100644 --- a/src/jmsg.c +++ b/src/jmsg.c @@ -110,7 +110,7 @@ Java_org_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls, (xbt_main_func_t) jprocess, /*data*/ NULL, host, - /*kill_time*/0., + /* kill_time */-1, /*argc, argv, properties*/ 0,NULL,NULL); @@ -226,14 +226,16 @@ Java_org_simgrid_msg_MsgNative_processGetHost(JNIEnv * env, jclass cls, } host = MSG_process_get_host(process); + jobject res = (jobject)MSG_host_get_data(host); - if (!MSG_host_get_data(host)) { - jxbt_throw_jni(env, "MSG_process_get_host() failed"); - return NULL; + if (!res) { + XBT_INFO("Binding error for host %s ",MSG_host_get_name(host)); + jxbt_throw_jni(env, bprintf("Binding error for host %s ",MSG_host_get_name(host))); + return NULL; } /* return the global reference to the java host instance */ - return (jobject) MSG_host_get_data(host); + return res; } @@ -359,7 +361,7 @@ Java_org_simgrid_msg_MsgNative_hostGetByName(JNIEnv * env, jclass cls, XBT_DEBUG("Looking for host '%s'",name); /* get the host by name (the hosts are created during the grid resolution) */ host = MSG_get_host_by_name(name); - XBT_DEBUG("MSG gave %p as native host (smx_host=%p)", host,host? host->smx_host:NULL); + XBT_DEBUG("MSG gave %p as native host", host); if (!host) { /* invalid name */ jxbt_throw_host_not_found(env, name); @@ -404,13 +406,18 @@ Java_org_simgrid_msg_MsgNative_hostGetName(JNIEnv * env, jclass cls, jobject jhost) { m_host_t host = jhost_get_native(env, jhost); + const char* name; if (!host) { jxbt_throw_notbound(env, "host", jhost); return NULL; } - return (*env)->NewStringUTF(env, MSG_host_get_name(host)); + name = MSG_host_get_name(host); + if (!name) + xbt_die("This host has no name..."); + + return (*env)->NewStringUTF(env, name); } JNIEXPORT jint JNICALL @@ -506,137 +513,6 @@ Java_org_simgrid_msg_MsgNative_hostIsAvail(JNIEnv * env, jclass cls, * The MSG task connected functions implementation. * ***************************************************************************************/ -JNIEXPORT void JNICALL -Java_org_simgrid_msg_MsgNative_taskCreate(JNIEnv * env, jclass cls, - jobject jtask, jstring jname, - jdouble jcomputeDuration, - jdouble jmessageSize) -{ - m_task_t task; /* the native task to create */ - const char *name = NULL; /* the name of the task */ - - if (jcomputeDuration < 0) { - jxbt_throw_illegal(env, - bprintf - ("Task ComputeDuration (%f) cannot be negative", - (double) jcomputeDuration)); - return; - } - - if (jmessageSize < 0) { - jxbt_throw_illegal(env, - bprintf("Task MessageSize (%f) cannot be negative", - (double) jmessageSize)); - return; - } - - if (jname) { - /* 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); - - if (jname) - (*env)->ReleaseStringUTFChars(env, jname, name); - - /* bind & store the task */ - jtask_bind(jtask, task, env); - MSG_task_set_data(task, jtask); -} - -JNIEXPORT void JNICALL -Java_org_simgrid_msg_MsgNative_parallel_taskCreate(JNIEnv * env, jclass cls, - jobject jtask, - jstring jname, - jobjectArray jhosts, - jdoubleArray - jcomputeDurations_arg, - jdoubleArray - jmessageSizes_arg) -{ - - m_task_t task; /* the native parallel task to create */ - const char *name; /* the name of the task */ - int host_count; - m_host_t *hosts; - double *computeDurations; - double *messageSizes; - jdouble *jcomputeDurations; - jdouble *jmessageSizes; - - jobject jhost; - int index; - - - if (!jcomputeDurations_arg) { - jxbt_throw_null(env, - xbt_strdup - ("Parallel task compute durations cannot be null")); - return; - } - - if (!jmessageSizes_arg) { - jxbt_throw_null(env, - xbt_strdup - ("Parallel task message sizes cannot be null")); - return; - } - - if (!jname) { - jxbt_throw_null(env, xbt_strdup("Parallel task name cannot be null")); - return; - } - - host_count = (int) (*env)->GetArrayLength(env, jhosts); - - - hosts = xbt_new0(m_host_t, host_count); - computeDurations = xbt_new0(double, host_count); - messageSizes = xbt_new0(double, host_count * host_count); - - jcomputeDurations = - (*env)->GetDoubleArrayElements(env, jcomputeDurations_arg, 0); - jmessageSizes = - (*env)->GetDoubleArrayElements(env, jmessageSizes_arg, 0); - - for (index = 0; index < host_count; index++) { - jhost = (*env)->GetObjectArrayElement(env, jhosts, index); - hosts[index] = jhost_get_native(env, jhost); - computeDurations[index] = jcomputeDurations[index]; - } - for (index = 0; index < host_count * host_count; index++) { - messageSizes[index] = jmessageSizes[index]; - } - - (*env)->ReleaseDoubleArrayElements(env, jcomputeDurations_arg, - jcomputeDurations, 0); - (*env)->ReleaseDoubleArrayElements(env, jmessageSizes_arg, jmessageSizes, - 0); - - - /* get the C string from the java string */ - name = (*env)->GetStringUTFChars(env, jname, 0); - - task = - MSG_parallel_task_create(name, host_count, hosts, computeDurations, - messageSizes, NULL); - - (*env)->ReleaseStringUTFChars(env, jname, name); - - /* associate the java task object and the native task */ - jtask_bind(jtask, task, env); - - MSG_task_set_data(task, (void *) jtask); - - if (!MSG_task_get_data(task)) - jxbt_throw_jni(env, "global ref allocation failed"); -} - JNIEXPORT jobject JNICALL Java_org_simgrid_msg_MsgNative_taskGetSender(JNIEnv * env, jclass cls, jobject jtask) @@ -748,25 +624,6 @@ Java_org_simgrid_msg_MsgNative_taskSetPriority(JNIEnv * env, jclass cls, MSG_task_set_priority(task, (double) priority); } -JNIEXPORT void JNICALL -Java_org_simgrid_msg_MsgNative_taskDestroy(JNIEnv * env, jclass cls, - jobject jtask_arg) -{ - - /* get the native task */ - m_task_t task = jtask_to_native_task(jtask_arg, env); - - if (!task) { - jxbt_throw_notbound(env, "task", task); - return; - } - - 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 Java_org_simgrid_msg_MsgNative_taskExecute(JNIEnv * env, jclass cls, jobject jtask)