Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge scm.gforge.inria.fr:/gitroot/simgrid/simgrid-java
[simgrid.git] / src / jmsg_process.h
index 8d3862a..7d5bead 100644 (file)
 #define MSG_JPROCESS_H
 
 #include <jni.h>
-#include "msg/msg.h"
-#include "simix/simix.h"
+#include <msg/msg.h>
+#include <simgrid/simix.h>
+
+//Cached java fields
+jfieldID jprocess_field_Process_bind;
+jfieldID jprocess_field_Process_host;
+jfieldID jprocess_field_Process_killTime;
+jfieldID jprocess_field_Process_id;
+jfieldID jprocess_field_Process_name;
+jfieldID jprocess_field_Process_pid;
+jfieldID jprocess_field_Process_ppid;
+
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Process_exit(JNIEnv *env, jobject);
+
+
+jobject native_to_java_process(m_process_t process);
 
 /**
  * This function returns a global reference to the  java process instance 
@@ -37,24 +52,6 @@ jobject jprocess_new_global_ref(jobject jprocess, JNIEnv * env);
  */
 void jprocess_delete_global_ref(jobject jprocess, JNIEnv * env);
 
-/**
- *
- * This function tests if the specified java process instance is alive. 
- * A java process object is alive if it has been started and has not yet 
- * terminated.
- * 
- * @param jprocess             The java process to test.
- * @param env                  The env of the current thread
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the methos isAlive() of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException. 
- *
- * @return                             If the java process is alive the function returns
- *                                             true. Otherwise the function returns false.
- */
-jboolean jprocess_is_alive(jobject jprocess, JNIEnv * env);
 
 /**
  * This function waits for a java process to terminate.
@@ -69,33 +66,6 @@ jboolean jprocess_is_alive(jobject jprocess, JNIEnv * env);
  *
  */
 void jprocess_join(jobject jprocess, JNIEnv * env);
-
-/**
- * This function starts the specified java process.
- *
- * @param jprocess             The java process to start.
- * @param env                  The env of the current thread
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the methos start() of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException. 
- */
-void jprocess_start(jobject jprocess, JNIEnv * env);
-
-/**
- * This function forces the java process to stop.
- *
- * @param jprocess             The java process to stop.
- * @param env                  The env of the current thread
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the methos stop() of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException. 
- */
-void jprocess_exit(jobject jprocess, JNIEnv * env);
-
 /**
  * This function associated a native process to a java process instance.
  *
@@ -169,74 +139,105 @@ jboolean jprocess_is_valid(jobject jprocess, JNIEnv * env);
  */
 jstring jprocess_get_name(jobject jprocess, JNIEnv * env);
 
-/**
- * This function yields the specified java process.
- *
- * @param jprocess             The java process to yield.
- * @param env                  The env of the current thread.
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the method switchProcess of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException.
- */
-void jprocess_yield(jobject jprocess, JNIEnv * env);
-
-/**
- * This function locks the mutex of the specified java process.
- *
- * @param jprocess             The java process of the mutex to lock.
- * @param env                  The env of the current thread.
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the method lockMutex of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException.
- */
-void jprocess_lock_mutex(jobject jprocess, JNIEnv * env);
-
-/**
- * This function unlocks the mutex of the specified java process.
- *
- * @param jprocess             The java process of the mutex to unlock.
- * @param env                  The env of the current thread.
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the method unlockMutex of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException.
- */
-void jprocess_unlock_mutex(jobject jprocess, JNIEnv * env);
-
-/**
- * This function signals the condition of the mutex of the specified java process.
- *
- * @param jprocess             The java process of the condtion to signal.
- * @param env                  The env of the current thread.
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the method signalCond of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException.
- */
-void jprocess_signal_cond(jobject jprocess, JNIEnv * env);
-
-/**
- * This function waits the condition of the mutex of the specified java process.
- *
- * @param jprocess             The java process of the condtion to wait for.
- * @param env                  The env of the current thread.
- *
- * @exception                  If the class Process is not found the function throws 
- *                                             the ClassNotFoundException. If the method waitCond of 
- *                                             this class is not found the function throws the exception 
- *                                             NotSuchMethodException.
- */
-void jprocess_wait_cond(jobject jprocess, JNIEnv * env);
-
-void jprocess_schedule(smx_context_t context);
-
-void jprocess_unschedule(smx_context_t context);
-
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              nativeInit
+ * Signature   ();
+ */
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jclass cls);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              create
+ * Signature   (Lorg/simgrid/msg/Host;)V
+ */
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Process_create(JNIEnv * env,
+                                    jobject jprocess_arg,
+                                    jobject jhostname);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              killAll
+ * Signature   (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_killAll
+    (JNIEnv *, jclass, jint);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              fromPID
+ * Signature   (I)Lorg/simgrid/msg/Process;
+ */
+JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_fromPID
+    (JNIEnv *, jclass, jint);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              currentProcess
+ * Signature   ()Lorg/simgrid/msg/Process;
+ */
+JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_currentProcess
+    (JNIEnv *, jclass);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              suspend
+ * Signature   (Lorg/simgrid/msg/Process;)V
+ */
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Process_suspend(JNIEnv * env,
+                                          jobject jprocess);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              resume
+ * Signature   (Lorg/simgrid/msg/Process;)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_resume
+    (JNIEnv *, jobject);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              isSuspended
+ * Signature   (Lorg/simgrid/msg/Process;)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_Process_isSuspended
+    (JNIEnv *, jobject);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              sleep
+ * Signature   (DI)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep
+    (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              waitFor
+ * Signature   (D)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_waitFor
+    (JNIEnv *, jobject, jdouble);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              kill
+ * Signature   (Lorg/simgrid/msg/Process;)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_kill
+    (JNIEnv *, jobject);
+
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              migrate
+ * Signature   (Lorg/simgrid/msg/Host;)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_migrate
+    (JNIEnv *, jobject, jobject);
+/*
+ * Class               org_simgrid_msg_Process
+ * Method              setKillTime
+ * Signature   (D)V
+ */
+JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setKillTime
+    (JNIEnv *, jobject, jdouble);
 
 #endif                          /* !MSG_JPROCESS_H */