/* 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
{\r
if(MSG_OK != MSG_clean())\r
throw MsgException("MSG_clean() failed");\r
+ \r
}\r
\r
void info(const char* s)\r
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