Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
please sonar by removing useless asignments and return statements
[simgrid.git] / src / bindings / java / JavaContext.cpp
index 19f7601..54bc03f 100644 (file)
 #include <xbt/function_types.h>
 #include <simgrid/simix.h>
 #include <xbt/ex.h>
+#include <xbt/ex.hpp>
 #include "JavaContext.hpp"
 #include "jxbt_utilities.h"
 #include "xbt/dynar.h"
 #include "../../simix/smx_private.h"
+
 extern JavaVM *__java_vm;
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(jmsg, "MSG for Java(TM)");
 
 namespace simgrid {
-namespace java {
+namespace kernel {
+namespace context {
 
-simgrid::simix::ContextFactory* java_factory()
+ContextFactory* java_factory()
 {
   XBT_INFO("Using regular java threads.");
   return new JavaContextFactory();
@@ -42,7 +45,7 @@ JavaContext* JavaContextFactory::self()
 
 JavaContext* JavaContextFactory::create_context(
   std::function<void()> code,
-  void_pfn_smxprocess_t cleanup, smx_process_t process)
+  void_pfn_smxprocess_t cleanup, smx_actor_t process)
 {
   return this->new_context<JavaContext>(std::move(code), cleanup, process);
 }
@@ -50,7 +53,7 @@ JavaContext* JavaContextFactory::create_context(
 void JavaContextFactory::run_all()
 {
   xbt_dynar_t processes = SIMIX_process_get_runnable();
-  smx_process_t process;
+  smx_actor_t process;
   unsigned int cursor;
   xbt_dynar_foreach(processes, cursor, process) {
     static_cast<JavaContext*>(SIMIX_process_get_context(process))->resume();
@@ -59,7 +62,7 @@ void JavaContextFactory::run_all()
 
 JavaContext::JavaContext(std::function<void()> code,
         void_pfn_smxprocess_t cleanup_func,
-        smx_process_t process)
+        smx_actor_t process)
   : Context(std::move(code), cleanup_func, process)
 {
   static int thread_amount=0;
@@ -80,12 +83,9 @@ JavaContext::JavaContext(std::function<void()> code,
         "Failed to create context #%d. You may want to switch to Java coroutines to increase your limits (error: %s)."
         "See the Install section of simgrid-java documentation (in doc/install.html) for more on coroutines.",
         thread_amount, ex.what());
-      xbt_ex new_exception(str);
+      xbt_ex new_exception(XBT_THROW_POINT, str);
       new_exception.category = ex.category;
       new_exception.value = ex.value;
-      new_exception.file = __FILE__;
-      new_exception.line = __LINE__;
-      new_exception.func = __func__;
       std::throw_with_nested(std::move(new_exception));
     }
   } else {
@@ -137,7 +137,7 @@ void JavaContext::stop()
    // jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError", bprintf("Process %s killed :) (file smx_context_java.c)", MSG_process_get_name( (msg_process_t)context) ));
     jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError",
       bprintf("Process %s killed :) (file JavaContext.cpp)",
-      simcall_process_get_name(this->process()) ));
+          this->process()->name.c_str() ));
     XBT_DEBUG("Trigger a cancel error at the C level");
     THROWF(cancel_error, 0, "process cancelled");
   } else {
@@ -165,5 +165,4 @@ void JavaContext::resume()
   xbt_os_sem_acquire(this->end);
 }
 
-}
-}
+}}} // namespace simgrid::kernel::context