X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/de3873f6bb7a9aff6d85dbbe999b93f58b48cd7b..67d66b0cf79b9fc02c0450f254584693dbf21d3b:/src/bindings/java/jmsg_comm.cpp diff --git a/src/bindings/java/jmsg_comm.cpp b/src/bindings/java/jmsg_comm.cpp index 47f14d60a6..5bc056aaf4 100644 --- a/src/bindings/java/jmsg_comm.cpp +++ b/src/bindings/java/jmsg_comm.cpp @@ -1,21 +1,18 @@ /* Java bindings to the Comm API */ -/* Copyright (c) 2012-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2012-2021. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ #include "jmsg_comm.h" -#include "jxbt_utilities.h" -#include "jmsg.h" +#include "jmsg.hpp" +#include "jxbt_utilities.hpp" -#include #include XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(java); -SG_BEGIN_DECL() - static jfieldID jcomm_field_Comm_bind; static jfieldID jcomm_field_Comm_finished; static jfieldID jcomm_field_Comm_receiving; @@ -23,14 +20,14 @@ static jfieldID jtask_field_Comm_task; static jfieldID jcomm_field_Comm_taskBind; void jcomm_bind_task(JNIEnv *env, jobject jcomm) { - msg_comm_t comm = (msg_comm_t) (uintptr_t) env->GetLongField(jcomm, jcomm_field_Comm_bind); + const_msg_comm_t comm = (msg_comm_t)(uintptr_t)env->GetLongField(jcomm, jcomm_field_Comm_bind); //test if we are receiving or sending a task. jboolean jreceiving = env->GetBooleanField(jcomm, jcomm_field_Comm_receiving); if (jreceiving == JNI_TRUE) { //bind the task object. msg_task_t task = MSG_comm_get_task(comm); xbt_assert(task != nullptr, "Task is nullptr"); - jobject jtask_global = static_cast(MSG_task_get_data(task)); + auto jtask_global = static_cast(MSG_task_get_data(task)); //case where the data has already been retrieved if (jtask_global == nullptr) { return; @@ -61,13 +58,12 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_nativeInit(JNIEnv *env, jclass } JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_nativeFinalize(JNIEnv *env, jobject jcomm) { - msg_comm_t comm; msg_task_t *task_received; task_received = (msg_task_t*) (uintptr_t) env->GetLongField(jcomm, jcomm_field_Comm_taskBind); - xbt_free(task_received); + delete task_received; - comm = (msg_comm_t) (uintptr_t) env->GetLongField(jcomm, jcomm_field_Comm_bind); + const_msg_comm_t comm = (msg_comm_t)(uintptr_t)env->GetLongField(jcomm, jcomm_field_Comm_bind); MSG_comm_destroy(comm); } @@ -99,7 +95,7 @@ JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_Comm_test(JNIEnv *env, jobject j } JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_waitCompletion(JNIEnv *env, jobject jcomm, jdouble timeout) { - msg_comm_t comm = (msg_comm_t) (uintptr_t) env->GetLongField(jcomm, jcomm_field_Comm_bind); + auto comm = (msg_comm_t)(uintptr_t)env->GetLongField(jcomm, jcomm_field_Comm_bind); if (not comm) { jxbt_throw_null(env, "comm is null"); return; @@ -111,7 +107,7 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_waitCompletion(JNIEnv *env, job } msg_error_t status; - status = MSG_comm_wait(comm,static_cast(timeout)); + status = MSG_comm_wait(comm, timeout); env->SetBooleanField(jcomm, jcomm_field_Comm_finished, JNI_TRUE); if (status == MSG_OK) { jcomm_bind_task(env,jcomm); @@ -123,7 +119,7 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_waitCompletion(JNIEnv *env, job static msg_comm_t* jarray_to_commArray(JNIEnv *env, jobjectArray jcomms, /* OUT */ int *count) { *count = env->GetArrayLength(jcomms); - msg_comm_t* comms = xbt_new(msg_comm_t, *count); + auto* comms = new msg_comm_t[*count]; for (int i=0; i < *count; i++) { jobject jcomm = env->GetObjectArrayElement(jcomms, i); @@ -147,8 +143,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_waitAll(JNIEnv *env, jclass cls if (not comms) return; - MSG_comm_waitall(comms, count, static_cast(timeout)); - xbt_free(comms); + MSG_comm_waitall(comms, count, timeout); + delete[] comms; } JNIEXPORT int JNICALL Java_org_simgrid_msg_Comm_waitAny(JNIEnv *env, jclass cls, jobjectArray jcomms) { @@ -162,9 +158,7 @@ JNIEXPORT int JNICALL Java_org_simgrid_msg_Comm_waitAny(JNIEnv *env, jclass cls, } int rank = MSG_comm_waitany(dyn); - xbt_free(comms); + delete[] comms; xbt_dynar_free(&dyn); return rank; } - -SG_END_DECL()