X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6de03ecc4e630732984a0673512a5d15fd75e270..886b7085ea26ae9500f57e065cd6c1cbc2b5a4ec:/src/bindings/java/org/simgrid/msg/Process.java diff --git a/src/bindings/java/org/simgrid/msg/Process.java b/src/bindings/java/org/simgrid/msg/Process.java index 2fe319e41e..291ab60818 100644 --- a/src/bindings/java/org/simgrid/msg/Process.java +++ b/src/bindings/java/org/simgrid/msg/Process.java @@ -5,7 +5,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ package org.simgrid.msg; - + import java.util.Arrays; import java.util.Vector; @@ -47,56 +47,40 @@ public abstract class Process implements Runnable { * access to it. It is set automatically during the build of the object. */ private long bind; - /** - * Indicates if the process is started - */ + /** Indicates if the process is started */ boolean started; /** * Even if this attribute is public you must never access to it. * It is used to compute the id of an MSG process. */ public static long nextProcessId = 0; - + /** * Even if this attribute is public you must never access to it. * It is compute automatically during the creation of the object. * The native functions use this identifier to synchronize the process. */ - public long id; - - /** - * Start time of the process - */ - public double startTime = 0; - /** - * Kill time of the process + private long id; + + /** Time at which the process should be created */ + protected double startTime = 0; + /** Time at which the process should be killed. + * + * Set at creation, and used internally by SimGrid */ - public double killTime = -1; + private double killTime = -1; + + private String name; - /** - * The name of the process. - */ - protected String name; - /** - * The PID of the process - */ - protected int pid = -1; - /** - * The PPID of the process - */ - protected int ppid = -1; - /** - * The host of the process - */ - protected Host host = null; + private int pid = -1; + private int ppid = -1; + private Host host = null; /** The arguments of the method function of the process. */ public Vector args; - - /** - * Default constructor - */ + + /** Default constructor */ protected Process() { this.id = nextProcessId++; this.name = null; @@ -128,8 +112,8 @@ public abstract class Process implements Runnable { * @param args The arguments of the main function of the process. * * @exception HostNotFoundException if no host with this name exists. - * NativeException - * @throws NativeException + * NativeException + * @throws NativeException * */ public Process(String hostname, String name, String args[]) throws HostNotFoundException, NativeException { @@ -157,6 +141,8 @@ public abstract class Process implements Runnable { public Process(Host host, String name, String[]args) { this(); this.host = host; + if (host == null) + throw new NullPointerException("Process name cannot be NULL"); if (name == null) throw new NullPointerException("Process name cannot be NULL"); this.name = name; @@ -179,6 +165,8 @@ public abstract class Process implements Runnable { public Process(Host host, String name, String[]args, double startTime, double killTime) { this(); this.host = host; + if (host == null) + throw new NullPointerException("Process name cannot be NULL"); if (name == null) throw new NullPointerException("Process name cannot be NULL"); this.name = name; @@ -186,7 +174,7 @@ public abstract class Process implements Runnable { this.args = new Vector(); if (null != args) this.args.addAll(Arrays.asList(args)); - + this.startTime = startTime; this.killTime = killTime; } @@ -207,49 +195,36 @@ public abstract class Process implements Runnable { */ public static native int killAll(int resetPID); - /** - * This method kill a process. + /** Simply kills the receiving process. * + * SimGrid sometimes have issues when you kill processes that are currently communicating and such. We are working on it to fix the issues. */ public native void kill(); - /** - * Suspends the process by suspending the task on which it was - * waiting for the completion. - */ + + /** Suspends the process. See {@link #resume()} to resume it afterward */ public native void suspend(); - /** - * Suspends the process by suspending the task on which it was - * waiting for the completion. - * DEPRECATED: use suspend instead. + /** Resume a process that was suspended by {@link #suspend()}. */ + public native void resume(); + /** Tests if a process is suspended. + * + * @see #suspend() + * @see #resume() */ - @Deprecated - public void pause() { - suspend(); - } + public native boolean isSuspended(); + /** - * Sets the "auto-restart" flag of the process. + * Specify whether the process should restart when its host restarts after a failure + * + * A process naturally stops when its host stops. It starts again only if autoRestart is set to true. + * Otherwise, it just disappears when the host stops. */ public native void setAutoRestart(boolean autoRestart); - /** - * Restarts the process from the beginning - */ + /** Restarts the process from the beginning */ public native void restart(); - /** - * Resumes a suspended process by resuming the task on which it was - * waiting for the completion. - */ - public native void resume(); - /** - * Tests if a process is suspended. - * - * @return The method returns true if the process is suspended. - * Otherwise the method returns false. - */ - public native boolean isSuspended(); /** * Returns the name of the process */ - public String msgName() { + public String getName() { return this.name; } /** @@ -291,20 +266,20 @@ public abstract class Process implements Runnable { * Returns the value of a given process property. */ public native String getProperty(String name); - + /** * Set the kill time of the process * @param killTime the time when the process is killed */ public native void setKillTime(double killTime); - + /** * This static method returns the currently running process. * * @return The current process. * */ - public static native Process currentProcess(); + public static native Process getCurrentProcess(); /** * Migrates a process to another host. * @@ -324,7 +299,8 @@ public abstract class Process implements Runnable { /** * Makes the current process sleep until millis milliseconds and nanos nanoseconds * have elapsed. - * You should note that unlike "waitFor" which takes seconds, this method takes milliseconds and nanoseconds. + * Unlike {@link #waitFor(double)} which takes seconds, this method takes + * milliseconds and nanoseconds. * Overloads Thread.sleep. * @param millis the length of time to sleep in milliseconds. * @param nanos additionnal nanoseconds to sleep. @@ -336,34 +312,22 @@ public abstract class Process implements Runnable { */ public native void waitFor(double seconds) throws HostFailureException; /** - * - */ - public void showArgs() { - Msg.info("[" + this.name + "/" + this.getHost().getName() + "] argc=" + - this.args.size()); - for (int i = 0; i < this.args.size(); i++) - Msg.info("[" + this.msgName() + "/" + this.getHost().getName() + - "] args[" + i + "]=" + this.args.get(i)); - } - /** - * This method actually creates and run the process. - * It is a noop if the process is already launched. - * @throws HostNotFoundException - */ - public final void start() throws HostNotFoundException { - if (!started) { - started = true; - create(host.getName()); - } - } - - /** - * This method runs the process. Il calls the method function that you must overwrite. + * This method actually creates and run the process. + * It is a noop if the process is already launched. + * @throws HostNotFoundException */ + public final void start() throws HostNotFoundException { + if (!started) { + started = true; + create(host.getName()); + } + } + + /** This method runs the process. Il calls the method function that you must overwrite. */ + @Override public void run() { String[] args = null; /* do not fill it before the signal or this.args will be empty */ - //waitSignal(); /* wait for other people to fill the process in */ try { args = new String[this.args.size()]; @@ -377,27 +341,26 @@ public abstract class Process implements Runnable { Msg.info("Unexpected behavior. Stopping now"); System.exit(1); } - catch(ProcessKilledError pk) { - - } + catch(ProcessKilledError pk) { + } exit(); } /** * The main function of the process (to implement). - * - * @param args - * @throws MsgException - */ + * + * @param args + * @throws MsgException + */ public abstract void main(String[]args) throws MsgException; - public native void exit(); + public native void exit(); /** * Class initializer, to initialize various JNI stuff */ - public static native void nativeInit(); + private static native void nativeInit(); static { - Msg.nativeInit(); + org.simgrid.NativeLib.nativeInit(); nativeInit(); } /**