Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Java: simplify a bit Task.receive()
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 21 Apr 2016 11:00:47 +0000 (13:00 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 21 Apr 2016 11:00:47 +0000 (13:00 +0200)
src/bindings/java/jmsg_task.cpp

index 5e83bf3..d904fb3 100644 (file)
@@ -359,13 +359,10 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Task_sendBounded(JNIEnv * env,jobjec
 JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Task_receive(JNIEnv * env, jclass cls, jstring jalias, jdouble jtimeout,
                                                             jobject jhost)
 {
 JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Task_receive(JNIEnv * env, jclass cls, jstring jalias, jdouble jtimeout,
                                                             jobject jhost)
 {
-  msg_error_t rv;
-  msg_task_t *task = xbt_new(msg_task_t,1);
-  *task = NULL;
+  msg_task_t task = NULL;
 
   msg_host_t host = NULL;
   jobject jtask_global, jtask_local;
 
   msg_host_t host = NULL;
   jobject jtask_global, jtask_local;
-  const char *alias;
 
   if (jhost) {
     host = jhost_get_native(env, jhost);
 
   if (jhost) {
     host = jhost_get_native(env, jhost);
@@ -376,25 +373,23 @@ JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Task_receive(JNIEnv * env, jclass
     }
   }
 
     }
   }
 
-  alias = env->GetStringUTFChars(jalias, 0);
-  rv = MSG_task_receive_ext(task, alias, (double) jtimeout, host);
+  const char *alias = env->GetStringUTFChars(jalias, 0);
+  msg_error_t rv = MSG_task_receive_ext(&task, alias, (double) jtimeout, host);
   if (env->ExceptionOccurred())
     return NULL;
   if (rv != MSG_OK) {
     jmsg_throw_status(env,rv);
     return NULL;
   }
   if (env->ExceptionOccurred())
     return NULL;
   if (rv != MSG_OK) {
     jmsg_throw_status(env,rv);
     return NULL;
   }
-  jtask_global = (jobject) MSG_task_get_data(*task);
+  jtask_global = (jobject) MSG_task_get_data(task);
 
   /* Convert the global ref into a local ref so that the JVM can free the stuff */
   jtask_local = env->NewLocalRef(jtask_global);
   env->DeleteGlobalRef(jtask_global);
 
   /* Convert the global ref into a local ref so that the JVM can free the stuff */
   jtask_local = env->NewLocalRef(jtask_global);
   env->DeleteGlobalRef(jtask_global);
-  MSG_task_set_data(*task, NULL);
+  MSG_task_set_data(task, NULL);
 
   env->ReleaseStringUTFChars(jalias, alias);
 
 
   env->ReleaseStringUTFChars(jalias, alias);
 
-  xbt_free(task);
-
   return (jobject) jtask_local;
 }
 
   return (jobject) jtask_local;
 }