/*
- * simgrid.msg.Msg.java 1.00 07/05/01
+ * Contains all the native methods related to Process, Host and Task.
*
- * Copyright 2006,2007 Martin Quinson, Malek Cherier
+ * Copyright 2006,2007,2010 The SimGrid Team
* All right reserved.
*
* This program is free software; you can redistribute
package simgrid.msg;
-/* Contains all the native methods reloaded by Process, Host and Task.
- *
- * @author Abdelmalek Cherier
- * @author Martin Quinson
- * @since SimGrid 3.3
+/**
+ * Contains all the native methods related to Process, Host and Task.
*/
final class MsgNative {
- final static native
- void selectContextFactory(String name) throws NativeException;
-
- /******************************************************************
- * The natively implemented methods connected to the MSG Process *
- ******************************************************************/
-
- /**
- * The natively implemented method to create an MSG process.
- *
- * @param process The java process object to bind with the MSG native process.
- * @param host A valid (binded) host where create the process.
- *
- * @exception simgrid.msg.JniException if JNI stuff goes wrong.
- *
- * @see Process constructors.
- */
- final static native
- void processCreate(Process process, Host host) throws JniException;
-
- /**
- * The natively implemented method to kill all the process of the simulation.
- *
- * @param resetPID Should we reset the PID numbers. A negative number means no reset
- * and a positive number will be used to set the PID of the next newly
- * created process.
- *
- * @return The function returns the PID of the next created process.
- */
- final static native int processKillAll(int resetPID);
-
- /**
- * The natively implemented method to suspend an MSG process.
- *
- * @param process The valid (binded with a native process) java process to suspend.
- *
- * @exception JniException if something goes wrong with JNI
- * NativeException if the SimGrid native code failed.
- *
- * @see Process.pause()
- */
- final static native void processSuspend(Process process)
- throws JniException, NativeException;
-
- /**
- * The natively implemented method to kill a MSG process.
- *
- * @param process The valid (binded with a native process) java process to kill.
- *
- * @see Process.kill()
- */
- final static native void processKill(Process process)
- throws JniException;
-
- /**
- * The natively implemented method to resume a suspended MSG process.
- *
- * @param process The valid (binded with a native process) java process to resume.
- *
- * @exception JniException if something goes wrong with JNI
- * NativeException if the SimGrid native code failed.
- *
- * @see Process.restart()
- */
- final static native void processResume(Process process)
- throws JniException, NativeException;
-
- /**
- * The natively implemented method to test if MSG process is suspended.
- *
- * @param process The valid (binded with a native process) java process to test.
- *
- * @return If the process is suspended the method retuns true. Otherwise the
- * method returns false.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Process.isSuspended()
- */
- final static native boolean processIsSuspended(Process process) throws
- JniException;
-
- /**
- * The natively implemented method to get the host of a MSG process.
- *
- * @param process The valid (binded with a native process) java process to get the host.
- *
- * @return The method returns the host where the process is running.
- *
- * @exception JniException if something goes wrong with JNI
- * NativeException if the SimGrid native code failed.
- *
- * @see Process.getHost()
- */
- final static native Host processGetHost(Process process)
- throws JniException, NativeException;
-
- /**
- * The natively implemented method to get a MSG process from his PID.
- *
- * @param PID The PID of the process to get.
- *
- * @return The process with the specified PID.
- *
- * @exception NativeException if the SimGrid native code failed.
- *
- * @see Process.getFromPID()
- */
- final static native Process processFromPID(int PID) throws NativeException;
-
- /**
- * The natively implemented method to get the PID of a MSG process.
- *
- * @param process The valid (binded with a native process) java process to get the PID.
- *
- * @return The PID of the specified process.
- *
- * @exception NativeException if the SimGrid native code failed.
- *
- * @see Process.getPID()
- */
- final static native int processGetPID(Process process) throws
- NativeException;
-
- /**
- * The natively implemented method to get the PPID of a MSG process.
- *
- * @param process The valid (binded with a native process) java process to get the PID.
- *
- * @return The PPID of the specified process.
- *
- * @exception NativeException if the SimGrid native code failed.
- *
- * @see Process.getPPID()
- */
- final static native int processGetPPID(Process process) throws
- NativeException;
-
- /**
- * The natively implemented method to get the current running process.
- *
- * @return The current process.
- *
- * @exception NativeException if the SimGrid native code failed.
-
- * @see Process.currentProcess()
- */
- final static native Process processSelf() throws NativeException;
-
- /**
- * The natively implemented method to get the current running process PID.
- *
- * @return The PID of the current process.
- *
- * @see Process.currentProcessPID()
- */
- final static native int processSelfPID();
-
- /**
- * The natively implemented method to get the current running process PPID.
- *
- * @return The PPID of the current process.
- *
- * @see Process.currentProcessPPID()
- */
- final static native int processSelfPPID();
-
- /**
- * The natively implemented method to migrate a process from his currnet host to a new host.
- *
- * @param process The (valid) process to migrate.
- * @param host A (valid) host where move the process.
- *
- * @exception JniException if something goes wrong with JNI
- * NativeException if the SimGrid native code failed.
- *
- * @see Process.migrate()
- * @see Host.getByName()
- */
- final static native void processChangeHost(Process process, Host host)
- throws JniException, NativeException;
-
- /**
- * The natively implemented native to request the current process to sleep
- * until time seconds have elapsed.
- *
- * @param seconds The time the current process must sleep.
- *
- * @exception NativeException if the SimGrid native code failed.
- *
- * @see Process.waitFor()
- */
- final static native void processWaitFor(double seconds) throws
- NativeException;
-
- /**
- * The natively implemented native method to exit a process.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Process.exit()
- */
- final static native void processExit(Process process) throws JniException;
-
-
- /******************************************************************
- * The natively implemented methods connected to the MSG host *
- ******************************************************************/
-
- /**
- * The natively implemented method to get an host from his name.
- *
- * @param name The name of the host to get.
- *
- * @return The host having the specified name.
- *
- * @exception JniException if something goes wrong with JNI
- * HostNotFoundException if there is no such host
- * NativeException if the SimGrid native code failed.
- *
- * @see Host.getByName()
- */
- final static native Host hostGetByName(String name)
- throws JniException, HostNotFoundException, NativeException;
-
- /**
- * The natively implemented method to get the name of an MSG host.
- *
- * @param host The host (valid) to get the name.
- *
- * @return The name of the specified host.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Host.getName()
- */
- final static native String hostGetName(Host host) throws JniException;
-
- /**
- * The natively implemented method to get the number of hosts of the simulation.
- *
- * @return The number of hosts of the simulation.
- *
- * @see Host.getNumber()
- */
- final static native int hostGetNumber();
-
- /**
- * The natively implemented method to get the host of the current runing process.
- *
- * @return The host of the current running process.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Host.currentHost()
- */
- final static native Host hostSelf() throws JniException;
-
- /**
- * The natively implemented method to get the speed of a MSG host.
- *
- * @param host The host to get the host.
- *
- * @return The speed of the specified host.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Host.getSpeed()
- */
-
- final static native double hostGetSpeed(Host host) throws JniException;
-
- /**
- * The natively implemented native method to test if an host is avail.
- *
- * @param host The host to test.
- *
- * @return If the host is avail the method returns true.
- * Otherwise the method returns false.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @see Host.isAvail()
- */
- final static native boolean hostIsAvail(Host host) throws JniException;
-
- /**
- * The natively implemented native method to get all the hosts of the simulation.
- *
- * @exception JniException if something goes wrong with JNI
- *
- * @return A array which contains all the hosts of simulation.
- */
-
- final static native Host[] allHosts() throws JniException;
-
- /**
- * The natively implemented native method to get the number of running tasks on a host.
- *
- * @param The host concerned by the operation.
- *
- * @return The number of running tasks.
- *
- * @exception JniException if something goes wrong with JNI
- *
- */
- final static native int hostGetLoad(Host host) throws JniException;
-
- /******************************************************************
- * The natively implemented methods connected to the MSG task *
- ******************************************************************/
-
- /**
- * The natively implemented method to create a MSG task.
- *
- * @param name The name of th task.
- * @param computeDuration A value of the processing amount (in flop) needed
- * to process the task. If 0, then it cannot be executed
- * with the execute() method. This value has to be >= 0.
- * @param messageSize A value of amount of data (in bytes) needed to transfert
- * this task. If 0, then it cannot be transfered this task.
- * If 0, then it cannot be transfered with the get() and put()
- * methods. This value has to be >= 0.
- * @param task The java task object to bind with the native task to create.
- *
- * @exception JniException if something goes wrong with JNI
- * NullPointerException if the specified name is null.
- * IllegalArgumentException if compute duration <0 or message size <0
- *
- * @see Task.create()
- */
- final static native void taskCreate(Task task, String name,
- double computeDuration,
- double messageSize)
- throws JniException, NullPointerException, IllegalArgumentException;
-
- /**
- * The natively implemented method to get the sender of a task.
- *
- * @param task The task (valid) to get the sender.
- *
- * @return The sender of the task.
- *
- * @exception InvalidTaskException is the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- *
- * @see Task.getSender()
- */
- final static native Process taskGetSender(Task task) throws JniException;
-
- /**
- * The natively implementd method to get the source of a task.
- *
- * @param task The task to get the source.
- *
- * @return The source of the task.
- *
- * @exception InvalidTaskException is the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- *
- * @see Task.getSource()
- */
- final static native Host taskGetSource(Task task) throws JniException,
- NativeException;
-
- /**
- * The natively implemented method to get the name of the task.
- *
- * @param task The task to get the name.
- *
- * @return The name of the specified task.
- *
- * @exception InvalidTaskException is the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- *
- * @see Task.getName()
- */
- final static native String taskGetName(Task task) throws JniException;
-
- /**
- * The natively implemented method to cancel a task.
- *
- * @param task The task to cancel.
- *
- * @exception InvalidTaskException if the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the cancelation failed.
- *
- * @see Task.cancel().
- */
- final static native void taskCancel(Task task) throws JniException,
- NativeException;
-
- /**
- * The natively implemented method to create a MSG parallel task.
- *
- * @param name The name of the parallel task.
- * @param hosts The list of hosts implied by the parallel task.
- * @param computeDurations The total number of operations that have to be performed
- * on the hosts.
- * @param messageSizes An array of doubles
- *
- * @see ParallelTask.create()
- */
- final static native void parallelTaskCreate(Task pTask, String name,
- Host[]hosts,
- double[]computeDurations,
- double[]messageSizes)
- throws JniException, NullPointerException, IllegalArgumentException;
-
- /**
- * The natively implemented method to get the computing amount of the task.
- *
- * @param task The task to get the computing amount.
- *
- * @return The computing amount of the specified task.
- *
- * @exception InvalidTaskException if the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the cancelation failed.
- *
- * @see Task.getComputeDuration()
- */
- final static native double taskGetComputeDuration(Task task) throws
- JniException;
-
- /**
- * The natively implemented method to get the remaining computation
- *
- * @param task The task to get the remaining computation.
- *
- * @return The remaining computation of the specified task.
- *
- * @exception InvalidTaskException if the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the cancelation failed.
- *
- * @see Task.getRemainingDuration()
- */
- final static native double taskGetRemainingDuration(Task task) throws
- JniException;
-
- /**
- * The natively implemented method to set the priority of a task.
- *
- * @param task The task to set the priority
- *
- * @param priority The new priority of the specified task.
- *
- * @exception InvalidTaskException if the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the cancelation failed.
- *
- * @see Task.setPriority()
- */
- final static native void taskSetPriority(Task task,
- double priority) throws
- JniException;
-
- /**
- * The natively implemented method to destroy a MSG task.
- *
- * @param The task to destroy.
- *
- * @exception InvalidTaskException is the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the destruction failed.
- *
- * @see Task.destroy()
- */
- final static native void taskDestroy(Task task) throws JniException,
- NativeException;
-
- /**
- * The natively implemented method to execute a MSG task.
- *
- * @param task The task to execute.
- *
- * @exception InvalidTaskException is the specified task is not valid. A task
- * is invalid if it is not binded with a native task.
- * MsgException if the destruction failed.
- *
- * @see Task.execute()
- */
- final static native void taskExecute(Task task) throws JniException,
- NativeException;
-
-
- /******************************************************************
- * Task reception methods *
- ******************************************************************/
-
- /**
- * The natively implemented method to listen on the channel and wait for receiving a task with a timeout.
- *
- * @param channel The channel to listen.
- * @param timeout The timeout of the listening.
- * @param host The specific host from which we accept messages (or NULL for any).
- *
- * @return The task read from the channel.
- *
- * @exception MsgException if the listening operation failed.
- *
- * @see Channel.getWithTimeout()
- *
- */
- final static native Task taskGet(int channel, double timeout,
- Host host) throws JniException,
- NativeException;
-
-
- /**
- * The natively implemented method to test whether there is a pending communication on the channel.
- *
- * @param channel The channel concerned by the operation.
- *
- * @return The method returns true if there is a pending communication on the specified
- * channel. Otherwise the method returns false.
- *
- * @see Channel.hasPendingCommunication()
- */
- final static native boolean taskProbe(int channel) throws JniException;
-
- /**
- * The natively implemented method to test whether there is a pending communication on a
- * channel, and who sent it.
- *
- * @param The channel concerned by the operation.
- *
- * @return The method returns -1 if there is no pending communication and
- * the PID of the process who sent it otherwise.
- *
- * @see Channel.getCummunicatingProcess()
- */
- final static native int taskGetCommunicatingProcess(int channel) throws
- JniException;
-
- /**
- * The natively implemented method to get the number of tasks waiting to be received on a
- * channel and sent by a host.
- *
- * @param channel The channel concerned by the operation.
- *
- * @param host The sender of the tasks.
- *
- * @return The number of tasks waiting to be received on a channel
- * and sent by the specified host.
- *
- * @exception InvalidHostException if the specified host is not valid.
- *
- * @see Channel.getHostWaiting()
- */
- final static native int taskProbeHost(int channel,
- Host host) throws JniException;
-
- /******************************************************************
- * Task emission methods *
- ******************************************************************/
- /**
- * The natively implemented method to put a task on the channel of an host.
- *
- * @param host The host on which to send the data
- * @param channel The channel where to put the task.
- * @param task The task to put.
- * @param task Timeout (or <0 if none)
- *
- * @exception InvalidTaskException if the task is not valid.
- * InvalidHostException if the host is not valid.
- * MsgException if the operation failed.
- *
- */
- final static native void hostPut(Host host, int channel, Task task,
- double timeout) throws JniException,
- NativeException;
-
-
- /**
- * The natively implemented method to put a task on channel with a bounded transmition
- * rate.
- *
- * @param channel The channel where to put the task.
- * @param task The task to put.
- * @param host The host containing the channel.
- * @param max_rate The bounded transmition rate.
- *
- * @exception InvalidTaskException if the task is not valid.
- * InvalidHostException if the host is not valid.
- * MsgException if the operation failed.
- *
- * @see Channel.putBounded()
- */
- final static native void hostPutBounded(Host host, int channel, Task task,
- double max_rate) throws
- JniException, NativeException;
+ final static native
+ void selectContextFactory(String name) throws NativeException;
+
+ /******************************************************************
+ * The natively implemented methods connected to the MSG Process *
+ ******************************************************************/
+
+ /**
+ * The natively implemented method to create an MSG process.
+ *
+ * @param process The java process object to bind with the MSG native process.
+ * @param host A valid (binded) host where create the process.
+ *
+ * @see Process constructors.
+ */
+ final static native
+ void processCreate(Process process, Host host);
+
+ /**
+ * The natively implemented method to kill all the process of the simulation.
+ *
+ * @param resetPID Should we reset the PID numbers. A negative number means no reset
+ * and a positive number will be used to set the PID of the next newly
+ * created process.
+ *
+ * @return The function returns the PID of the next created process.
+ */
+ final static native int processKillAll(int resetPID);
+
+ /**
+ * The natively implemented method to suspend an MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to suspend.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.pause()
+ */
+ final static native void processSuspend(Process process) throws NativeException;
+
+ /**
+ * The natively implemented method to kill a MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to kill.
+ *
+ * @see Process.kill()
+ */
+ final static native void processKill(Process process);
+
+ /**
+ * The natively implemented method to resume a suspended MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to resume.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.restart()
+ */
+ final static native void processResume(Process process) throws NativeException;
+
+ /**
+ * The natively implemented method to test if MSG process is suspended.
+ *
+ * @param process The valid (binded with a native process) java process to test.
+ *
+ * @return If the process is suspended the method retuns true. Otherwise the
+ * method returns false.
+ *
+ * @see Process.isSuspended()
+ */
+ final static native boolean processIsSuspended(Process process);
+
+ /**
+ * The natively implemented method to get the host of a MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to get the host.
+ *
+ * @return The method returns the host where the process is running.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.getHost()
+ */
+ final static native Host processGetHost(Process process) throws NativeException;
+
+ /**
+ * The natively implemented method to get a MSG process from his PID.
+ *
+ * @param PID The PID of the process to get.
+ *
+ * @return The process with the specified PID.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.getFromPID()
+ */
+ final static native Process processFromPID(int PID) throws NativeException;
+
+ /**
+ * The natively implemented method to get the PID of a MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to get the PID.
+ *
+ * @return The PID of the specified process.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.getPID()
+ */
+ final static native int processGetPID(Process process) throws NativeException;
+
+ /**
+ * The natively implemented method to get the PPID of a MSG process.
+ *
+ * @param process The valid (binded with a native process) java process to get the PID.
+ *
+ * @return The PPID of the specified process.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.getPPID()
+ */
+ final static native int processGetPPID(Process process) throws NativeException;
+
+ /**
+ * The natively implemented method to get the current running process.
+ *
+ * @return The current process.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+
+ * @see Process.currentProcess()
+ */
+ final static native Process processSelf() throws NativeException;
+
+ /**
+ * The natively implemented method to migrate a process from his currnet host to a new host.
+ *
+ * @param process The (valid) process to migrate.
+ * @param host A (valid) host where move the process.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.migrate()
+ * @see Host.getByName()
+ */
+ final static native void processChangeHost(Process process, Host host) throws NativeException;
+
+ /**
+ * The natively implemented native to request the current process to sleep
+ * until time seconds have elapsed.
+ *
+ * @param seconds The time the current process must sleep.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Process.waitFor()
+ */
+ final static native void processWaitFor(double seconds) throws NativeException;
+
+ /**
+ * The natively implemented native method to exit a process.
+ *
+ * @see Process.exit()
+ */
+ final static native void processExit(Process process);
+
+
+ /******************************************************************
+ * The natively implemented methods connected to the MSG host *
+ ******************************************************************/
+
+ /**
+ * The natively implemented method to get an host from his name.
+ *
+ * @param name The name of the host to get.
+ *
+ * @return The host having the specified name.
+ *
+ * @exception HostNotFoundException if there is no such host
+ * NativeException if the SimGrid native code failed.
+ *
+ * @see Host.getByName()
+ */
+ final static native Host hostGetByName(String name) throws HostNotFoundException, NativeException;
+
+ /**
+ * The natively implemented method to get the name of an MSG host.
+ *
+ * @param host The host (valid) to get the name.
+ *
+ * @return The name of the specified host.
+ *
+ * @see Host.getName()
+ */
+ final static native String hostGetName(Host host);
+
+ /**
+ * The natively implemented method to get the number of hosts of the simulation.
+ *
+ * @return The number of hosts of the simulation.
+ *
+ * @see Host.getNumber()
+ */
+ final static native int hostGetCount();
+
+ /**
+ * The natively implemented method to get the host of the current runing process.
+ *
+ * @return The host of the current running process.
+ *
+ * @see Host.currentHost()
+ */
+ final static native Host hostSelf();
+
+ /**
+ * The natively implemented method to get the speed of a MSG host.
+ *
+ * @param host The host to get the host.
+ *
+ * @return The speed of the specified host.
+ *
+ * @see Host.getSpeed()
+ */
+
+ final static native double hostGetSpeed(Host host);
+
+ /**
+ * The natively implemented native method to test if an host is avail.
+ *
+ * @param host The host to test.
+ *
+ * @return If the host is avail the method returns true.
+ * Otherwise the method returns false.
+ *
+ * @see Host.isAvail()
+ */
+ final static native boolean hostIsAvail(Host host);
+
+ /**
+ * The natively implemented native method to get all the hosts of the simulation.
+ *
+ * @return A array which contains all the hosts of simulation.
+ */
+
+ final static native Host[] allHosts();
+
+ /**
+ * The natively implemented native method to get the number of running tasks on a host.
+ *
+ * @param The host concerned by the operation.
+ *
+ * @return The number of running tasks.
+ */
+ final static native int hostGetLoad(Host host);
+
+ /******************************************************************
+ * The natively implemented methods connected to the MSG task *
+ ******************************************************************/
+
+ /**
+ * The natively implemented method to create a MSG task.
+ *
+ * @param name The name of th task.
+ * @param computeDuration A value of the processing amount (in flop) needed
+ * to process the task. If 0, then it cannot be executed
+ * with the execute() method. This value has to be >= 0.
+ * @param messageSize A value of amount of data (in bytes) needed to transfert
+ * this task. If 0, then it cannot be transfered this task.
+ * If 0, then it cannot be transfered with the get() and put()
+ * methods. This value has to be >= 0.
+ * @param task The java task object to bind with the native task to create.
+ *
+ * @exception IllegalArgumentException if compute duration <0 or message size <0
+ *
+ * @see Task.create()
+ */
+ final static native void taskCreate(Task task, String name,
+ double computeDuration,
+ double messageSize)
+ throws IllegalArgumentException;
+
+ /**
+ * The natively implemented method to get the sender of a task.
+ *
+ * @param task The task (valid) to get the sender.
+ *
+ * @return The sender of the task.
+ *
+ * @see Task.getSender()
+ */
+ final static native Process taskGetSender(Task task);
+
+ /**
+ * The natively implementd method to get the source of a task.
+ *
+ * @param task The task to get the source.
+ *
+ * @return The source of the task.
+ *
+ * @exception NativeException if the SimGrid native code failed.
+ *
+ * @see Task.getSource()
+ */
+ final static native Host taskGetSource(Task task) throws NativeException;
+
+ /**
+ * The natively implemented method to get the name of the task.
+ *
+ * @param task The task to get the name.
+ *
+ * @return The name of the specified task.
+ *
+ * @see Task.getName()
+ */
+ final static native String taskGetName(Task task);
+
+ /**
+ * The natively implemented method to cancel a task.
+ *
+ * @param task The task to cancel.
+ *
+ * @exception NativeException if the cancellation failed.
+ *
+ * @see Task.cancel().
+ */
+ final static native void taskCancel(Task task) throws NativeException;
+
+ /**
+ * The natively implemented method to create a MSG parallel task.
+ *
+ * @param name The name of the parallel task.
+ * @param hosts The list of hosts implied by the parallel task.
+ * @param computeDurations The total number of operations that have to be performed
+ * on the hosts.
+ * @param messageSizes An array of doubles
+ *
+ * @see ParallelTask.create()
+ */
+ final static native void parallelTaskCreate(Task pTask, String name,
+ Host[]hosts,
+ double[]computeDurations,
+ double[]messageSizes)
+ throws NullPointerException, IllegalArgumentException;
+
+ /**
+ * The natively implemented method to get the computing amount of the task.
+ *
+ * @param task The task to get the computing amount.
+ *
+ * @return The computing amount of the specified task.
+ *
+ * @see Task.getComputeDuration()
+ */
+ final static native double taskGetComputeDuration(Task task);
+
+ /**
+ * The natively implemented method to get the remaining computation
+ *
+ * @param task The task to get the remaining computation.
+ *
+ * @return The remaining computation of the specified task.
+ *
+ * @see Task.getRemainingDuration()
+ */
+ final static native double taskGetRemainingDuration(Task task);
+
+ /**
+ * The natively implemented method to set the priority of a task.
+ *
+ * @param task The task to set the priority
+ *
+ * @param priority The new priority of the specified task.
+ *
+ * @see Task.setPriority()
+ */
+ final static native void taskSetPriority(Task task, double priority);
+
+ /**
+ * The natively implemented method to destroy a MSG task.
+ *
+ * @param The task to destroy.
+ *
+ * @exception NativeException on error in the C world
+ *
+ * @see Task.destroy()
+ */
+ final static native void taskDestroy(Task task) throws NativeException;
+
+ /**
+ * The natively implemented method to execute a MSG task.
+ *
+ * @param task The task to execute.
+ *
+ * @exception NativeException on error in the C world
+ *
+ * @see Task.execute()
+ */
+ final static native void taskExecute(Task task) throws NativeException;
+
+
+
+ /* ****************************************************************
+ * Communication methods thru mailboxes *
+ **************************************************************** */
+
+
+ final static native void taskSend(String alias, Task task, double timeout) throws NativeException;
+ final static native Task taskReceive(String alias, double timeout, Host host) throws NativeException;
+ final static native int taskListenFrom(String alias) throws NativeException;
+ final static native boolean taskListen(String alias);
+ final static native int taskListenFromHost(String alias, Host host);
+
+ /* ***************************************************************
+ * Task sending methods *
+ *************************************************************** */
+
+ /**
+ * The natively implemented method to send a task in a mailbox associated with an alias, with a bounded transmition
+ * rate.
+ *
+ * @param alias The alias of the mailbox.
+ * @param task The task to put.
+ * @param max_rate The bounded transmition rate.
+ *
+ * @exception NativeException on error in the C world
+ */
+ final static native void taskSendBounded(String alias, Task task, double maxrate) throws NativeException;
}