X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/591d1f1de204ef7303e6d02c88ae4c7f59c564de..ad937fe61d5fad7840a4fc3d01e588a5a90db829:/src/bindings/java/jmsg_process.h diff --git a/src/bindings/java/jmsg_process.h b/src/bindings/java/jmsg_process.h index 647d41fc44..8b8ba23bef 100644 --- a/src/bindings/java/jmsg_process.h +++ b/src/bindings/java/jmsg_process.h @@ -1,7 +1,6 @@ /* Functions related to the java process instances. */ -/* Copyright (c) 2007-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved. */ /* 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. */ @@ -9,233 +8,63 @@ #ifndef MSG_JPROCESS_H #define MSG_JPROCESS_H +#include "simgrid/msg.h" #include -#include -#include SG_BEGIN_DECL(); -//Cached java fields -extern jfieldID jprocess_field_Process_bind; -extern jfieldID jprocess_field_Process_host; -extern jfieldID jprocess_field_Process_killTime; -extern jfieldID jprocess_field_Process_id; -extern jfieldID jprocess_field_Process_name; +/* Shut up some errors in eclipse online compiler. I wish such a pimple wouldn't be needed */ +#ifndef JNIEXPORT +#define JNIEXPORT +#endif +#ifndef JNICALL +#define JNICALL +#endif +/* end of eclipse-mandated pimple */ + +// Cached java fields accessed by the rest of the code (FIXME: they should not) extern jfieldID jprocess_field_Process_pid; extern jfieldID jprocess_field_Process_ppid; -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_exit(JNIEnv *env, jobject); - -jobject native_to_java_process(msg_process_t process); - -/** - * This function returns a global reference to the java process instance specified by the parameter jprocess. - * - * @param jprocess The original java process instance. - * @param env The env of the current thread - * - * @return The global reference to the original java process instance. - */ -jobject jprocess_new_global_ref(jobject jprocess, JNIEnv * env); - -/** - * This function delete a global reference to a java process instance. - * If the java process is alive the function joins it and stops it before. - * - * @param The global refernce to delete. - * @param env The env of the current thread - * - * @see jprocess_join() - * @see jprocess_exit() - */ -void jprocess_delete_global_ref(jobject jprocess, JNIEnv * env); - -/** - * This function waits for a java process to terminate. - * - * @param jprocess The java process ot 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 - join() of this class is not found the function throws the exception NotSuchMethodException. - */ -void jprocess_join(jobject jprocess, JNIEnv * env); - -/** - * This function associated a native process to a java process instance. - * - * @param jprocess The java process instance. - * @param process The native process to bind. - * @param env The env of the current thread - * - * @exception If the class Process is not found the function throws the ClassNotFoundException. If the field - * bind of this class is not found the function throws the exception NotSuchFieldException. - */ -void jprocess_bind(jobject jprocess, msg_process_t process, JNIEnv * env); - -/** - * This function returns a native process from a java process instance. - * - * @param jprocess The java process object from which get the native process. - * @param env The env of the current thread - * - * @return The function returns the native process associated to the java process object. - * - * @exception If the class Process is not found the function throws the ClassNotFoundException. If the field - * bind of this class is not found the function throws the exception NotSuchFieldException. - */ -msg_process_t jprocess_to_native_process(jobject jprocess, JNIEnv * env); - -/** - * This function gets the id of the specified java process. - * - * @param jprocess The java process to get the id. - * @param env The env of the current thread - * - * @exception If the class Process is not found the function throws the ClassNotFoundException. If the field id - * of this class is not found the function throws the exception NotSuchFieldException. - * - * @return The id of the specified java process. - */ -jlong jprocess_get_id(jobject jprocess, JNIEnv * env); - -/** - * This function tests if a java process instance is valid. - * A java process object is valid if it is bind to a native process. - * - * @param jprocess The java process to test the validity. - * @param env The env of the current thread - * - * @return If the java process is valid the function returns true. Otherwise the function returns false. - */ -jboolean jprocess_is_valid(jobject jprocess, JNIEnv * env); - -/** - * This function gets the name of the specified java process. - * - * @param jprocess The java process to get the name. - * @param env The env of the current thread - * - * @exception If the class Process is not found the function throws the ClassNotFoundException. If the field name - * of this class is not found the function throws the exception NotSuchFieldException. - * - * @return The name of the specified java process. - */ -jstring jprocess_get_name(jobject jprocess, JNIEnv * env); - -/* - * Class org_simgrid_msg_Process - * Method nativeInit - * Signature (); - */ -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jclass cls); +/** Take a ref onto the java instance (to prevent its collection) */ +jobject jprocess_ref(jobject jprocess, JNIEnv* env); + +/** Release a ref onto the java instance */ +void jprocess_unref(jobject jprocess, JNIEnv* env); + +/** Binds a native instance to a java instance. */ +void jprocess_bind(jobject jprocess, msg_process_t process, JNIEnv* env); -/* - * 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 getProperty - * Signature (D)V - */ -JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_getProperty(JNIEnv *env, jobject jprocess, jobject jname); - -/* - * Class org_simgrid_msg_Process - * Method currentProcess - * Signature ()Lorg/simgrid/msg/Process; - */ -JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_getCurrentProcess (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 setAutoRestart - * Signature (Lorg/simgrid/msg/Process;Z)V - */ -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setAutoRestart (JNIEnv *, jobject, jboolean); - -/* - * Class org_simgrid_msg_Process - * Method restart - * Signature (Lorg/simgrid/msg/Process;)V - */ -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_restart (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); +/** Extract the java instance from the native one */ +jobject jprocess_from_native(msg_process_t process); + +/** Extract the native instance from the java one */ +msg_process_t jprocess_to_native(jobject jprocess, JNIEnv* env); + +/** Initialize the native world, called from the Java world at startup */ +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jclass cls); +/* Implement the Java API */ + +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv* env, jobject jprocess_arg, jobject jhostname); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_daemonize(JNIEnv* env, jobject jprocess); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_killAll(JNIEnv* env, jclass cls); +JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_fromPID(JNIEnv* env, jclass cls, jint pid); +JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_nativeGetPID(JNIEnv* env, jobject jprocess); +JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_getProperty(JNIEnv* env, jobject jprocess, jobject jname); +JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_getCurrentProcess(JNIEnv* env, jclass cls); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_suspend(JNIEnv* env, jobject jprocess); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_resume(JNIEnv* env, jobject jprocess); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setAutoRestart(JNIEnv* env, jobject jprocess, jboolean jauto_restart); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_restart(JNIEnv* env, jobject jprocess); +JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_Process_isSuspended(JNIEnv* env, jobject jprocess); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep(JNIEnv* env, jclass cls, jlong jmillis, jint jnanos); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_waitFor(JNIEnv* env, jobject jprocess, jdouble jseconds); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_kill(JNIEnv* env, jobject jprocess); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_migrate(JNIEnv* env, jobject jprocess, jobject jhost); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_yield(JNIEnv* env, jclass cls); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setKillTime(JNIEnv* env, jobject jprocess, jdouble jkilltime); JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_getCount(JNIEnv * env, jclass cls); SG_END_DECL(); -#endif /* !MSG_JPROCESS_H */ +#endif