Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add sleep in Process, with a Thread.sleep like use (in milliseconds/nanoseconds).
[simgrid.git] / src / jmsg_process.c
index f0fa160..cba0649 100644 (file)
@@ -15,9 +15,9 @@
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
 
+static jfieldID jprocess_field_Process_host;
 static jfieldID jprocess_field_Process_pid;
 static jfieldID jprocess_field_Process_ppid;
-static jfieldID jprocess_field_Process_host;
 
 jobject native_to_java_process(m_process_t process)
 {
@@ -232,6 +232,11 @@ Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jclass cls) {
        jprocess_field_Process_pid = jxbt_get_sfield(env, "org/simgrid/msg/Process", "pid", "I");
        jprocess_field_Process_ppid = jxbt_get_sfield(env, "org/simgrid/msg/Process", "ppid", "I");
        jprocess_field_Process_host = jxbt_get_jfield(env, jprocess_class_Process, "host", "Lorg/simgrid/msg/Host;");
+
+       if (!jprocess_class_Process || !jprocess_field_Process_pid ||
+                       !jprocess_field_Process_ppid || !jprocess_field_Process_host) {
+       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_Process_create(JNIEnv * env,
@@ -404,6 +409,16 @@ Java_org_simgrid_msg_Process_isSuspended(JNIEnv * env,
   /* true is the process is suspended, false otherwise */
   return (jboolean) MSG_process_is_suspended(process);
 }
+
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep
+       (JNIEnv *env, jclass cls, jlong jmillis, jint jnanos) {
+
+       double time =  jmillis / 1000 + jnanos / 1000;
+
+       MSG_error_t rv = MSG_process_sleep(time);
+  jxbt_check_res("MSG_process_sleep()", rv, MSG_OK,
+                 bprintf("unexpected error , please report this bug"));
+}
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_Process_waitFor(JNIEnv * env, jobject jprocess,
                                      jdouble jseconds)