/* 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 <xbt/ex.hpp>
+
#include "jmsg_process.h"
#include "jmsg.h"
jfieldID jprocess_field_Process_pid;
jfieldID jprocess_field_Process_ppid;
-JNIEXPORT void JNICALL
-Java_org_simgrid_msg_Process_exit(JNIEnv *env, jobject jprocess) {
-
-}
-
jobject native_to_java_process(msg_process_t process)
{
- simgrid::java::JavaContext* context = (simgrid::java::JavaContext*) MSG_process_get_smx_ctx(process);
+ simgrid::kernel::context::JavaContext* context = (simgrid::kernel::context::JavaContext*) MSG_process_get_smx_ctx(process);
return context->jprocess;
}
void jprocess_join(jobject jprocess, JNIEnv * env)
{
msg_process_t process = jprocess_to_native_process(jprocess,env);
- simgrid::java::JavaContext* context = (simgrid::java::JavaContext*) MSG_process_get_smx_ctx(process);
- xbt_os_thread_join(context->thread,NULL);
+ simgrid::kernel::context::JavaContext* context = (simgrid::kernel::context::JavaContext*) MSG_process_get_smx_ctx(process);
+ xbt_os_thread_join(context->thread,nullptr);
}
msg_process_t jprocess_to_native_process(jobject jprocess, JNIEnv * env)
jname = jprocess_get_name(jprocess_arg, env);
if (!jname) {
jxbt_throw_null(env,
- xbt_strdup("Internal error: Process name cannot be NULL"));
+ xbt_strdup("Internal error: Process name cannot be nullptr"));
return;
}
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_process_t process = SIMIX_process_self();
+ 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::java::java_main_jprocess(jprocess);
+ simgrid::kernel::context::java_main_jprocess(jprocess);
return 0;
}, jprocess,
host,
/*argc, argv, properties*/
- 0, NULL, NULL);
+ 0, nullptr, nullptr);
MSG_process_set_kill_time(process, (double)jkill);
/* bind the java process instance to the native process */
jprocess_bind(jprocess, process, env);
env->SetIntField(jprocess, jprocess_field_Process_pid,(jint) MSG_process_get_PID(process));
env->SetIntField(jprocess, jprocess_field_Process_ppid, (jint) MSG_process_get_PPID(process));
/* sets the Host of the process */
- jobject jhost = Java_org_simgrid_msg_Host_getByName(env,NULL, (jstring)jhostname);
+ jobject jhost = Java_org_simgrid_msg_Host_getByName(env,nullptr, (jstring)jhostname);
env->SetObjectField(jprocess, jprocess_field_Process_host, jhost);
}
if (!process) {
jxbt_throw_process_not_found(env, bprintf("PID = %d",(int) PID));
- return NULL;
+ return nullptr;
}
jobject jprocess = native_to_java_process(process);
if (!jprocess) {
jxbt_throw_jni(env, "get process failed");
- return NULL;
+ return nullptr;
}
return jprocess;
if (!process) {
jxbt_throw_notbound(env, "process", jprocess);
- return NULL;
+ return nullptr;
}
const char *name = env->GetStringUTFChars((jstring)jname, 0);
const char *property = MSG_process_get_property_value(process, name);
if (!property) {
- return NULL;
+ return nullptr;
}
jobject jproperty = env->NewStringUTF(property);
if (!process) {
jxbt_throw_jni(env, xbt_strdup("MSG_process_self() failed"));
- return NULL;
+ return nullptr;
}
jprocess = native_to_java_process(process);
return;
}
- TRY {
+ try {
MSG_process_auto_restart_set(process,auto_restart);
}
- CATCH (e) {
- xbt_ex_free(e);
+ catch (xbt_ex& e) {
+ // Nothing to do
}
}
return;
}
- TRY {
+ try {
MSG_process_restart(process);
}
- CATCH (e) {
- xbt_ex_free(e);
+ catch (xbt_ex& e) {
+ // Nothing to do
}
}
// 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,NULL);
+ jxbt_throw_host_failure(env,nullptr);
}
}
return;
}
- MSG_process_kill(process);
+ try {
+ MSG_process_kill(process);
+ } catch (xbt_ex& ex) {
+ XBT_VERB("This process just killed itself.");
+ }
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_migrate(JNIEnv * env, jobject jprocess, jobject jhost)
return (jint) MSG_process_get_number();
}
-}
+} // extern C