JNIEXPORT void JNICALL
Java_org_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls,
jobject jprocess_arg,
- jobject jhost)
+ jobject jhostname)
{
jobject jprocess; /* the global reference to the java process instance */
jstring jname; /* the name of the java process instance */
const char *name; /* the C name of the process */
+ const char *hostname;
m_process_t process; /* the native process to create */
m_host_t host; /* Where that process lives */
- XBT_DEBUG("Java_org_simgrid_msg_MsgNative_processCreate(env=%p,cls=%p,jproc=%p,jhost=%p)",
- env, cls, jprocess_arg, jhost);
+ hostname = (*env)->GetStringUTFChars(env, jhostname, 0);
+
+ XBT_DEBUG("Java_org_simgrid_msg_MsgNative_processCreate(env=%p,cls=%p,jproc=%p,host=%s)",
+ env, cls, jprocess_arg, hostname);
/* get the name of the java process */
}
/* bind/retrieve the msg host */
- host = jhost_get_native(env, jhost);
+ host = MSG_get_host_by_name(hostname);
if (!(host)) { /* not binded */
- jxbt_throw_notbound(env, "host", jhost);
+ jxbt_throw_host_not_found(env, hostname);
return;
}
(xbt_main_func_t) jprocess,
/*data*/ NULL,
host,
- /*kill_time*/0.,
+ /* kill_time */-1,
/*argc, argv, properties*/
0,NULL,NULL);
/* release our reference to the process name (variable name becomes invalid) */
//FIXME : This line should be uncommented but with mac it doesn't work. BIG WARNING
//(*env)->ReleaseStringUTFChars(env, jname, name);
+ (*env)->ReleaseStringUTFChars(env, jhostname, hostname);
/* bind the java process instance to the native process */
jprocess_bind(jprocess, process, env);
}
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;
}
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);
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
task =
MSG_task_create(name, (double) jcomputeDuration,
(double) jmessageSize, NULL);
-
if (jname)
(*env)->ReleaseStringUTFChars(env, jname, name);
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);
jxbt_throw_notbound(env, "task", task);
return;
}
-
MSG_error_t rv = MSG_task_destroy(task);
jxbt_check_res("MSG_task_destroy()", rv, MSG_OK,