Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Gtnets works with new struct network_element_t
[simgrid.git] / doc / module-msg.doc
index b95959e..5a5ccb3 100644 (file)
@@ -1,34 +1,5 @@
-/** \defgroup MSG_JAVA      jMSG
-    \ingroup MSG_API
-    \brief Java bindings to MSG (\ref MSG_API)
-
-    \htmlonly <!-- 
-      DOXYGEN_NAVBAR_LABEL="JAVA bindings" 
-      DOXYGEN_NAVBAR_CHILD "Simulation functions"=classsimgrid_1_1msg_1_1Msg.html
-      DOXYGEN_NAVBAR_CHILD "Host"=classsimgrid_1_1msg_1_1Host.html
-      DOXYGEN_NAVBAR_CHILD "Process"=classsimgrid_1_1msg_1_1Process.html
-      DOXYGEN_NAVBAR_CHILD "Task"=classsimgrid_1_1msg_1_1Task.html      
-      DOXYGEN_NAVBAR_CHILD "MsgException"=classsimgrid_1_1msg_1_1MsgException.html
-    --> \endhtmlonly 
-         
-      MSG was the first distributed programming environment provided within
-      SimGrid. While almost realistic, it remains quite simple (simplistic?).
-      This describes the Java bindings to this interface.
-
-      \section jMSG_who Who should use this (and who shouldn't)
-      
-      You should use MSG if you want to study some heuristics for a
-      given problem you don't really want to implement. If you want to
-      use the Java programming language, your are in the right
-      section. To use the C interface, please refer to \ref MSG_C.
-*/
+/** \addtogroup MSG_API
 
-/** \defgroup MSG_C      MSG native
-    \ingroup MSG_API
-    \brief Native interface to MSG (\ref MSG_API)
-
-    \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Native interface" --> \endhtmlonly 
-         
       MSG was the first distributed programming environment provided within
       SimGrid. While almost realistic, it remains quite simple (simplistic?).
       This describes the native to MSG.
@@ -38,35 +9,8 @@
       You should use MSG if you want to study some heuristics for a
       given problem you don't really want to implement. If you want to
       use the C programming language, your are in the right
-      section. To use the Java programming interface, please refer to
-      \ref MSG_JAVA.
-*/
-
-
-/**
-
-\defgroup MSG_LUA      lMSG
-    \ingroup MSG_API
-    \brief Lua bindings to MSG (\ref MSG_API)
-
-    \htmlonly <!-- 
-      DOXYGEN_NAVBAR_LABEL="LUA bindings" 
-    --> \endhtmlonly 
-         
-      MSG was the first distributed programming environment provided within
-      SimGrid. While almost realistic, it remains quite simple (simplistic?).
-      This describes the Lua bindings to this interface.
-
-      \section lMSG_who Who should use this (and who shouldn't)
-      
-      You should use MSG if you want to study some heuristics for a
-      given problem you don't really want to implement. If you want to
-      use the Lua script language, your are in the right
-      section. To use the C interface, please refer to \ref MSG_C.
-
-*/
-
-/** @addtogroup MSG_C
+      section. To use the Java or Ruby programming interfaces, please refer to
+      the documentation provided in the relevant packages.
 
   \section MSG_funct Offered functionnalities
    - \ref m_process_management
    - \ref m_host_management
    - \ref m_task_management
    - \ref msg_gos_functions
-   - \ref m_channel_management
    - \ref msg_easier_life
    - \ref msg_simulation
 
-  \section MSG_examples Examples of MSG
+  Also make sure to visit the page @ref MSG_examples.
+*/
+
+
+/** @defgroup m_datatypes_management MSG Data Types 
+    @ingroup MSG_API
+    @brief This section describes the different datatypes provided by MSG.
+    
+    \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Data types" --> \endhtmlonly
+*/
+
+/** @defgroup m_process_management Management Functions of Agents
+ *  @ingroup MSG_API
+ *  @brief This section describes the agent structure of MSG
+ *         (#m_process_t) and the functions for managing it.
+ */
+   
+/** @defgroup m_host_management Management functions of Hosts
+ *  @ingroup MSG_API
+ *  @brief This section describes the host structure of MSG
+ */
+  
+/** @defgroup m_task_management Managing functions of Tasks
+ *  @ingroup MSG_API
+ *  @brief This section describes the task structure of MSG
+ *         (#m_task_t) and the functions for managing it.
+ */
+   
+/** @defgroup msg_gos_functions MSG Operating System Functions
+ *  @ingroup MSG_API
+ *  @brief This section describes the functions that can be used
+ *         by an agent for handling some task.
+ */
+
+/** @defgroup msg_easier_life      Platform and Application management
+ *  @ingroup MSG_API
+ *  @brief This section describes functions to manage the platform creation
+ *         and the application deployment. Please check @ref
+ *         MSG_examples for an overview of their usage. 
+ */
+/** 
+@defgroup msg_simulation   MSG simulation Functions
+@ingroup MSG_API
+@brief This section describes the functions you need to know to
+       set up a simulation. You should have a look at \ref MSG_examples
+       to have an overview of their usage.
+
+@htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Simulation functions" --> @endhtmlonly
+*/
+
+
+/**
+@defgroup MSG_examples MSG Examples
+@ingroup MSG_API
  
-   - \ref MSG_ex_master_slave
-   - \ref MSG_ex_asynchronous_communications
-   - \ref MSG_ex_master_slave_scrip_lua
+MSG comes with an extensive set of examples. It is sometimes difficult
+to find the one you need. This list aims at helping you finding the
+example from which you can learn what you want to.
+
+@section MSG_ex_basics Basic examples and features
+
 */
 
-/** @addtogroup MSG_LUA
+/**
+@defgroup MSG_LUA      Lua bindings
+@ingroup MSG_API
+@brief Lua bindings to MSG (\ref MSG_API)
+
+@htmlonly <!--  DOXYGEN_NAVBAR_LABEL="LUA bindings" --> @endhtmlonly 
+         
+      This is the lua bindings of the \ref MSG_API interface.
+
+      \section lMSG_who Who should use this (and who shouldn't)
+      
+      If you want to use MSG to study your algorithm, but you don't
+      want to use the C language (using \ref MSG_API), then you should
+      use some bindings such as this one. The advantage of the lua
+      bindings is that they are distributed directly with the main
+      archive (in contrary to Java and Ruby bindings, for example,
+      that are distributed separately). Another advantage of lua is
+      that there is almost no performance loss with regard to the C
+      version (at least there shouln't be any -- it is still to be
+      precisely assessed).
 
   \section MSG_Lua_funct  Lua offered functionnalities in MSG
-   - \ref host_management
-   - \ref tasks_management
-   - \ref environment_management
+  Almost all important features of the MSG interface are available
+  from the lua bindings. Unfortunately, since doxygen does not support
+  the lua modules implemented directly in C as we are using, there is
+  no ready to use reference documentation for this module. Even more
+  than for the other modules, you will have to dig into the source
+  code of the examples to learn how to use it. 
+
   \section Lua_examples Examples of lua MSG
  
    - \ref MSG_ex_master_slave_lua
    - \ref MSG_ex_master_slave_lua_bypass
+   - Also, the lua version of the Chord example (in the source tree)
+     is a working non-trivial example of use of the lua bindings
 */
 
 
-/** @defgroup m_datatypes_management MSG Data Types 
-    @ingroup MSG_C
-    @brief This section describes the different datatypes provided by MSG.
-    
-    \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Data types" --> \endhtmlonly
-*/
-/**     \addtogroup m_process_management
-        \ingroup MSG_C  */
-/**     \addtogroup m_host_management
-        \ingroup MSG_C  */
-/**     \addtogroup m_task_management
-        \ingroup MSG_C  */
-/**     \addtogroup msg_gos_functions
-        \ingroup MSG_C  */
-/**     \addtogroup m_channel_management
-        \ingroup MSG_C  */
-/**     \addtogroup msg_easier_life
-        \ingroup MSG_C  */
-/**     \addtogroup msg_simulation
-        \ingroup MSG_C  */
-
-
-/** \page MSG_ex_asynchronous_communications Asynchronous communication applications
+/** \defgroup MSG_ex_asynchronous_communications Asynchronous communications
+    \ingroup MSG_examples
 
     Simulation of asynchronous communications between a sender and a receiver using a realistic platform and
     an external description of the deployment.
        - \ref MSG_ext_icomms_Receiver
        - \ref MSG_ext_icomms_core
        - \ref MSG_ext_icomms_Main
-     - \ref MSG_ext_icomms_fct
+     - \ref MSG_ext_icomms_fct_Waitall
+     - \ref MSG_ext_icomms_fct_Waitany
 
     <hr> 
     
 
     \dontinclude msg/icomms/peer2.c
 
-    \section MSG_ext_icomms_fct Waitall function for sender
+    \section MSG_ext_icomms_fct_Waitall Waitall function for sender
 
     The use of this function permit to send all messages and wait for the completion of all in one time.
 
     \skipline Sender function
     \until end_of_sender
 
-*/
-
-/** \page MSG_ex_master_slave_scrip_lua Master/slave application using lua console
-           
-    Simulation of a master-slave application using a realistic platform and
-    an external description of the deployment via a lua script.
-
-    \section MSG_ex_msl_TOC Table of contents:
-       
-     - \ref MSG_ext_msl_code
-       - \ref MSG_ext_msl_preliminary
-       - \ref MSG_ext_msl_master
-       - \ref MSG_ext_msl_slave
-       - \ref MSG_ext_msl_core
-       - \ref MSG_ext_msl_main
-     - \ref MSG_ext_msl_helping
-       - \ref MSG_ext_msl_platform
-
-<hr> 
-    
-    \dontinclude msg/masterslave/masterslave_console.c
-    
-    \section MSG_ext_msl_code Code of the application
-    
-    \subsection MSG_ext_msl_preliminary Preliminary declarations
-    
-    \skip include
-    \until } channel_t;
-    
-    \subsection MSG_ext_msl_master Master code
-    
-      This function has to be assigned to a m_process_t that will behave as the master.
-      It should not be called directly but either given as a parameter to
-      #MSG_process_create() or registered as a public function through 
-      #MSG_function_register() and then automatically assigned to a process through
-      #MSG_load_platform_script(). 
-      C style arguments (argc/argv) are interpreted as:
-       - the number of tasks to distribute
-       - the computation size of each task
-       - the size of the files associated to each task
-       - number of hosts that will accept those tasks.
-
-      Tasks are dumbly sent in a round-robin style.
-      
-      \until end_of_master
-\subsection MSG_ext_msl_slave Slave code
-    
-      This function has to be assigned to a #m_process_t that has to behave as a slave.
-      Just like the master fuction (described in \ref MSG_ext_ms_master), it should not be called directly.
-
-      This function keeps waiting for tasks and executes them as it receives them.
-      
-      \until end_of_slave
-
-\subsection MSG_ext_msl_core Simulation core
-
-      This function is the core of the simulation and is divided now only into 2 parts
-      thanks to MSG_load_platform_script().
-         -# Simulation settings and application deployment : MSG_load_platform_script() loads and creates a realistic 
-            environment and the agents on the right locations, described in the lua script file (see example below).
-           Note that the use of this function require a lua installation on your machine. 
-         -# The simulation is run with #MSG_main().
-        
-      Its arguments are:
-       - <i>platform_script_file</i>: the name of the script file containing a valid  platform and application description, using bound lua methods to bypass the surfxml parser.
+    \section MSG_ext_icomms_fct_Waitany Waitany function
 
-      \until end_of_test_all
+    The MSG_comm_waitany() function return the place of the first message send or receive from a xbt_dynar_t table.
 
-\subsection MSG_ext_msl_main Main() function
-   
-      This initializes MSG, runs a simulation, and free all data-structures created by MSG.
-      
-      \until end_of_main
-
-   \section MSG_ext_msl_helping Helping files
-
-   \subsection MSG_ext_msl_platform Example of platform script file
-
-   \include msg/masterslave/platform_script.lua
+    \subsection MSG_ext_icomms_fct_Waitany_sender From a sender
+       We can use this function to wait all sended messages.
+    \dontinclude msg/icomms/peer3.c
+    \skipline Sender function
+    \until end_of_sender
 
+    \subsection MSG_ext_icomms_fct_Waitany_receiver From a receiver
+       We can also wait for the receiving of all messages.
+    \dontinclude msg/icomms/peer3.c
+    \skipline Receiver function
+    \until end_of_receiver
 
 */
 
-/** \page MSG_ex_master_slave Master/slave application
+/** @defgroup MSG_ex_master_slave Basic Master/Slaves
+    @ingroup MSG_examples
     
     Simulation of a master-slave application using a realistic platform and
     an external description of the deployment. 
        - \ref MSG_ext_ms_platform
        
        
-      \dontinclude lua/master_slave.lua
+      \dontinclude lua/masterslave/master_slave.lua
       
       \section MSG_ext_ms_code_lua Code of the application
       
        - \ref MSG_ext_ms_core_lua
        
        
-      \dontinclude lua/master_slave_bypass.lua
+      \dontinclude lua/console/master_slave_bypass.lua
       
       \section MSG_ext_ms_code_lua Code of the application
       
       \until simgrid.clean()
       
 */
+