#include "jmsg_host.h"
#include "jmsg_process.h"
#include "jxbt_utilities.h"
-
+#include "msg/msg.h"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
void jvm_bind(JNIEnv *env, jobject jvm, msg_vm_t vm) {
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_nativeInit(JNIEnv *env, jclass cls) {
- jclass jprocess_class_VM = (*env)->FindClass(env, "org/simgrid/msg/VM");
- jvm_field_bind = jxbt_get_jfield(env, jprocess_class_VM, "bind", "J");
- if (!jvm_field_bind ) {
- jxbt_throw_native(env,bprintf("Can't find some fields in Java class. You should report this bug."));
- }
+ jclass jprocess_class_VM = (*env)->FindClass(env, "org/simgrid/msg/VM");
+ jvm_field_bind = jxbt_get_jfield(env, jprocess_class_VM, "bind", "J");
+ if (!jvm_field_bind ) {
+ jxbt_throw_native(env,bprintf("Can't find some fields in Java class. You should report this bug."));
+ }
}
JNIEXPORT void JNICALL
-Java_org_simgrid_msg_VM_start(JNIEnv *env, jobject jvm, jobject jhost, jint jcoreamount) {
- m_host_t host = jhost_get_native(env, jhost);
+Java_org_simgrid_msg_VM_start(JNIEnv *env, jobject jvm, jobject jhost, jstring jname, jint jcoreamount) {
+ msg_host_t host = jhost_get_native(env, jhost);
- msg_vm_t vm = MSG_vm_start(host, (int)jcoreamount);
+ const char *name;
+ name = (*env)->GetStringUTFChars(env, jname, 0);
+ name = xbt_strdup(name);
+
+ msg_vm_t vm = MSG_vm_start(host, name, (int)jcoreamount);
- jvm_bind(env,jvm,vm);
+ jvm_bind(env,jvm,vm);
+}
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_VM_destroy(JNIEnv *env, jobject jvm) {
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ MSG_vm_destroy(vm);
}
JNIEXPORT jboolean JNICALL
Java_org_simgrid_msg_VM_isSuspended(JNIEnv *env, jobject jvm) {
- msg_vm_t vm = jvm_get_native(env,jvm);
+ msg_vm_t vm = jvm_get_native(env,jvm);
- return MSG_vm_is_suspended(vm) ? JNI_TRUE : JNI_FALSE;
+ return MSG_vm_is_suspended(vm) ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT jboolean JNICALL
Java_org_simgrid_msg_VM_isRunning(JNIEnv *env, jobject jvm) {
- msg_vm_t vm = jvm_get_native(env,jvm);
+ msg_vm_t vm = jvm_get_native(env,jvm);
- return MSG_vm_is_running(vm) ? JNI_TRUE : JNI_FALSE;
+ return MSG_vm_is_running(vm) ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_bind(JNIEnv *env, jobject jvm, jobject jprocess) {
- msg_vm_t vm = jvm_get_native(env,jvm);
- m_process_t process = jprocess_to_native_process(jprocess,env);
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ msg_process_t process = jprocess_to_native_process(jprocess,env);
- MSG_vm_bind(vm,process);
+ xbt_assert((vm != NULL), "VM object is not binded");
+ xbt_assert((process != NULL), "Process object is not binded.");
+
+ MSG_vm_bind(vm,process);
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_unbind(JNIEnv *env, jobject jvm, jobject jprocess) {
- msg_vm_t vm = jvm_get_native(env,jvm);
- m_process_t process = jprocess_to_native_process(jprocess,env);
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ msg_process_t process = jprocess_to_native_process(jprocess,env);
- MSG_vm_unbind(vm,process);
+ MSG_vm_unbind(vm,process);
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_migrate(JNIEnv *env, jobject jvm, jobject jhost) {
- msg_vm_t vm = jvm_get_native(env,jvm);
- m_host_t host = jhost_get_native(env, jhost);
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ msg_host_t host = jhost_get_native(env, jhost);
- MSG_vm_migrate(vm,host);
+ MSG_vm_migrate(vm,host);
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_suspend(JNIEnv *env, jobject jvm) {
- msg_vm_t vm = jvm_get_native(env,jvm);
-
- MSG_vm_suspend(vm);
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ xbt_ex_t e;
+ TRY {
+ MSG_vm_suspend(vm);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_VM_resume(JNIEnv *env, jobject jvm) {
- msg_vm_t vm = jvm_get_native(env,jvm);
-
- MSG_vm_resume(vm);
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ xbt_ex_t e;
+ TRY {
+ MSG_vm_resume(vm);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
+}
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_VM_shutdown(JNIEnv *env, jobject jvm) {
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ xbt_ex_t e;
+ TRY {
+ MSG_vm_shutdown(vm);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
+}
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_VM_reboot(JNIEnv *env, jobject jvm) {
+ msg_vm_t vm = jvm_get_native(env,jvm);
+ xbt_ex_t e;
+ TRY {
+ MSG_vm_reboot(vm);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
}