Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use pointers instead references.
[simgrid.git] / src / cxx / Msg.cxx
index 20521cd..443ac6b 100644 (file)
  /* Msg functions implementation.\r
   */  \r
 \r
-#include <MsgException.hpp>\r
+\r
 #include <Msg.hpp>\r
 \r
 #include <msg/msg.h>\r
+#include <msg/private.h>\r
 #include <stdio.h>\r
 \r
-// XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(SimGridX);\r
+\r
+\r
 \r
 namespace SimGrid\r
 {\r
        namespace Msg\r
        {\r
+               #define SIMGRIDX_DEFAULT_CHANNEL_NUMBER ((int)10)\r
                \r
                void init(int argc, char** argv)\r
                {\r
                        MSG_global_init(&argc,argv);\r
-                       MSG_set_channel_number(10); // FIXME: this should not be fixed statically \r
+\r
+                       if(getMaxChannelNumber() == 0)\r
+                               setMaxChannelNumber(SIMGRIDX_DEFAULT_CHANNEL_NUMBER);\r
                }       \r
                \r
                void finalize(void)\r
@@ -38,6 +43,7 @@ namespace SimGrid
                {\r
                        if(MSG_OK != MSG_clean())\r
                                throw MsgException("MSG_clean() failed");\r
+                       \r
                }\r
                \r
                void info(const char* s)\r
@@ -51,6 +57,24 @@ namespace SimGrid
                        return MSG_get_clock();\r
                }\r
 \r
+               void setMaxChannelNumber(int number)\r
+               throw(InvalidArgumentException, LogicException)\r
+               {\r
+                       if(msg_global->max_channel > 0)\r
+                               throw LogicException("Max channel number already setted");\r
+\r
+                       if(number < 0)\r
+                               throw InvalidArgumentException("number");\r
+\r
+                       msg_global->max_channel = number;\r
+               }\r
+\r
+               int getMaxChannelNumber(void)\r
+               {\r
+                       return msg_global->max_channel;\r
+               }\r
+\r
        } // namespace Msg\r
 \r
-} // namespace SimGrid
\ No newline at end of file
+} // namespace SimGrid\r
+\r