Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2023.
[simgrid.git] / src / bindings / java / jmsg.cpp
index 70d99fa..9b60f4e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2023. 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. */
@@ -14,7 +14,6 @@
 #include "simgrid/plugins/file_system.h"
 #include "simgrid/plugins/live_migration.h"
 #include "simgrid/plugins/load.h"
-#include "simgrid/simix.h"
 
 #include "simgrid/s4u/Actor.hpp"
 #include "simgrid/s4u/Host.hpp"
@@ -85,7 +84,10 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_init(JNIEnv* env, jclass, jobjec
 {
   env->GetJavaVM(&__java_vm);
 
-  simgrid::kernel::context::factory_initializer = &simgrid::kernel::context::java_factory;
+  simgrid::kernel::context::ContextFactory::initializer = []() {
+    XBT_INFO("Using regular java threads.");
+    return new simgrid::kernel::context::JavaContextFactory();
+  };
   const _jthrowable* exc                        = env->ExceptionOccurred();
   if (exc) {
     env->ExceptionClear();
@@ -105,9 +107,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_init(JNIEnv* env, jclass, jobjec
   args.emplace_back("java");
   for (int index = 1; index < argc; index++) {
     auto jval       = (jstring)env->GetObjectArrayElement(jargs, index - 1);
-    const char* tmp = env->GetStringUTFChars(jval, nullptr);
-    args.emplace_back(tmp);
-    env->ReleaseStringUTFChars(jval, tmp);
+    jstring_wrapper tmp(env, jval);
+    args.emplace_back(tmp.value);
   }
 
   std::unique_ptr<char* []> argv(new char*[argc + 1]);
@@ -151,11 +152,8 @@ JNIEXPORT void JNICALL JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv* env, jclass)
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv* env, jclass, jstring jplatformFile)
 {
-  const char* platformFile = env->GetStringUTFChars(jplatformFile, nullptr);
-
+  jstring_wrapper platformFile(env, jplatformFile);
   simgrid_load_platform(platformFile);
-
-  env->ReleaseStringUTFChars(jplatformFile, platformFile);
 }
 
 JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv* env, jclass)
@@ -178,51 +176,45 @@ JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNI
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_debug(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_DEBUG("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_DEBUG("%s", s.value);
 }
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_verb(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_VERB("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_VERB("%s", s.value);
 }
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_info(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_INFO("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_INFO("%s", s.value);
 }
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_warn(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_WARN("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_WARN("%s", s.value);
 }
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_error(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_ERROR("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_ERROR("%s", s.value);
 }
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_critical(JNIEnv* env, jclass, jstring js)
 {
-  const char* s = env->GetStringUTFChars(js, nullptr);
-  XBT_CRITICAL("%s", s);
-  env->ReleaseStringUTFChars(js, s);
+  jstring_wrapper s(env, js);
+  XBT_CRITICAL("%s", s.value);
 }
 
 static void java_main(int argc, char* argv[]);
 
 JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_deployApplication(JNIEnv* env, jclass, jstring jdeploymentFile)
 {
-  const char* deploymentFile = env->GetStringUTFChars(jdeploymentFile, nullptr);
+  jstring_wrapper deploymentFile(env, jdeploymentFile);
 
   simgrid_register_default(java_main);
   simgrid_load_deployment(deploymentFile);
@@ -302,9 +294,7 @@ static void java_main(int argc, char* argv[])
   run_jprocess(env, context->jprocess_);
 }
 
-namespace simgrid {
-namespace kernel {
-namespace context {
+namespace simgrid::kernel::context {
 
 /** Run the Java org.simgrid.msg.Process */
 void java_main_jprocess(jobject jprocess)
@@ -316,6 +306,4 @@ void java_main_jprocess(jobject jprocess)
 
   run_jprocess(env, context->jprocess_);
 }
-} // namespace context
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::context