Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
missing exceptions
[simgrid.git] / src / java / simgrid / msg / MsgNative.java
index 26d2a97..8d0f2ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * 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
+/* FIXME: split into internal classes of Msg, Task, Host etc. */
+
+/**
+ *  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,TransferFailureException,HostFailureException,TimeoutFailureException;
+       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;
+
+}
\ No newline at end of file