//Create a slave on host "alice"
try {
Msg.info("Create process on host 'alice'");
- Slave process2 = new Slave("alice","process2");
+ new Slave("alice","process2");
}
catch (MsgException e){
System.out.println("Process2!");
Msg.init(args);
Msg.createEnvironment(args[0]);
- /* bypass deploymemt */
+ /* bypass deployment */
try {
- Master process1 = new Master("bob","process1");
+ new Master("bob","process1");
}
catch (MsgException e){
System.out.println("Create processes failed!");
public final static native void init(String[]args);
/**
- * Run the MSG simulation, and cleanup everything afterward.
+ * Run the MSG simulation.
*
- * If you want to chain simulations in the same process, you
- * should call again createEnvironment and deployApplication afterward.
+ * The simulation is not cleaned afterward (see
+ * {@link #clean()} if you really insist on cleaning the C side), so you can freely
+ * retrieve the informations that you want from the simulation. In particular, retrieving the status
+ * of a process or the current date is perfectly ok.
*
- * @see MSG_run, MSG_clean
+ * @see MSG_run
*/
public final static native void run() ;
+
+ /**
+ * Cleanup the MSG simulation.
+ *
+ * This function is only useful if you want to chain the simulations within
+ * the same environment. But actually, it's not sure at all that cleaning the
+ * JVM is faster than restarting a new one, so it's probable that using this
+ * function is not a brilliant idea. Do so at own risk.
+ *
+ * @see MSG_clean
+ */
+ public final static native void clean();
+
/**
* The native implemented method to create the environment of the simulation.
/* get the native task */
m_task_t task = jtask_to_native_task(jtask_arg, env);
-// jobject jtask;
if (!task) {
jxbt_throw_notbound(env, "task", task);
return;
}
-// jtask = (jobject) MSG_task_get_data(task);
MSG_error_t rv = MSG_task_destroy(task);
jval = (jstring) (*env)->GetObjectArrayElement(env, jargs, index);
tmp = (*env)->GetStringUTFChars(env, jval, 0);
argv[index + 1] = strdup(tmp);
- //argv[index] = strdup(tmp);
(*env)->ReleaseStringUTFChars(env, jval, tmp);
}
JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls)
{
MSG_error_t rv;
- int index; //xbt_fifo_item_t item = NULL;
+ int index;
m_host_t *hosts;
jobject jhost;
}
XBT_INFO("Clean native world");
- /* cleanup native stuff */
- rv = MSG_OK != MSG_clean();
+}
+JNIEXPORT void JNICALL
+ JNICALL Java_org_simgrid_msg_Msg_clean(JNIEnv * env, jclass cls)
+{
+ /* cleanup native stuff. Calling it is ... useless since leaking memory at the end of the simulation is a non-issue */
+ MSG_error_t rv = MSG_OK != MSG_clean();
jxbt_check_res("MSG_clean()", rv, MSG_OK,
bprintf
("unexpected error : MSG_clean() failed .. please report this bug "));
}
-
+
JNIEXPORT jint JNICALL
Java_org_simgrid_msg_MsgNative_processKillAll(JNIEnv * env, jclass cls,
jint jresetPID)
JNIEXPORT void JNICALL
JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls);
+JNIEXPORT void JNICALL
+ JNICALL Java_org_simgrid_msg_Msg_clean(JNIEnv * env, jclass cls);
JNIEXPORT void JNICALL
Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs);