Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
reindent, no real change
[simgrid.git] / src / bindings / java / jmsg_process.cpp
index 63c44a5..8094762 100644 (file)
@@ -14,7 +14,7 @@
 #include "jxbt_utilities.h"
 #include "JavaContext.hpp"
 
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(java);
 
 SG_BEGIN_DECL()
 
@@ -76,28 +76,25 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv * env, jobject
 {
   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;
-  msg_process_t process;          /* the native process to create                         */
   msg_host_t host;                /* Where that process lives */
 
-  hostname = env->GetStringUTFChars((jstring) jhostname, 0);
 
   /* get the name of the java process */
   jname = jprocess_get_name(jprocess_arg, env);
   if (!jname) {
-    jxbt_throw_null(env,
-            xbt_strdup("Internal error: Process name cannot be nullptr"));
+    jxbt_throw_null(env, xbt_strdup("Process name cannot be nullptr"));
     return;
   }
+  const char* name = env->GetStringUTFChars(jname, 0);
 
   /* bind/retrieve the msg host */
+  const char* hostname = env->GetStringUTFChars((jstring)jhostname, 0);
   host = MSG_host_by_name(hostname);
-
   if (!(host)) {    /* not bound */
     jxbt_throw_host_not_found(env, hostname);
     return;
   }
+  env->ReleaseStringUTFChars((jstring)jhostname, hostname);
 
   /* create a global java process instance */
   jprocess = jprocess_ref(jprocess_arg, env);
@@ -106,32 +103,27 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv * env, jobject
     return;
   }
 
-  /* build the C name of the process */
-  name = env->GetStringUTFChars(jname, 0);
-  name = xbt_strdup(name);
-
-  /* Retrieve the kill time from the process */
-  jdouble jkill = env->GetDoubleField(jprocess, jprocess_field_Process_killTime);
   /* Actually build the MSG process */
-  process = MSG_process_create_with_environment(name, [](int argc, char** argv) -> int {
-              smx_actor_t process = SIMIX_process_self();
-              // This is the jprocess passed as environment.
-              // It would be simplet if we could use a closure.
-              jobject jprocess = (jobject) MSG_process_get_data(process);
-              simgrid::kernel::context::java_main_jprocess(jprocess);
-              return 0;
-            }, jprocess,
-            host,
-            /*argc, argv, properties*/
-            0, nullptr, nullptr);
-  MSG_process_set_kill_time(process, (double)jkill);
+  msg_process_t process = MSG_process_create_with_environment(name,
+                                                              [](int argc, char** argv) -> int {
+                                                                // This is the jprocess passed as process data.
+                                                                // It would be simpler if we could use a closure.
+                                                                jobject jprocess =
+                                                                    (jobject)MSG_process_get_data(MSG_process_self());
+                                                                simgrid::kernel::context::java_main_jprocess(jprocess);
+                                                                return 0;
+                                                              },
+                                                              jprocess, host,
+                                                              /*argc, argv, properties*/
+                                                              0, nullptr, nullptr);
+
+  env->ReleaseStringUTFChars(jname, name);
   /* bind the java process instance to the native process */
   jprocess_bind(jprocess, process, env);
 
-  /* 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(jname, name);
-  env->ReleaseStringUTFChars((jstring) jhostname, hostname);
+  /* Retrieve the kill time from the process */
+  jdouble jkill = env->GetDoubleField(jprocess, jprocess_field_Process_killTime);
+  MSG_process_set_kill_time(process, (double)jkill);
 
   /* sets the PID and the PPID of the process */
   env->SetIntField(jprocess, jprocess_field_Process_pid,(jint) MSG_process_get_PID(process));
@@ -299,7 +291,7 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep(JNIEnv *env, jclass cl
     // is a cancelled_error, see bindings/java/smx_context_java.c, function void smx_ctx_java_stop(smx_context_t context) and src/msg/msg_gos.c
     // function  msg_error_t MSG_process_sleep(double nb_sec)
 
-    jxbt_throw_host_failure(env,nullptr);
+    jxbt_throw_host_failure(env, "");
   }
 }