Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Some new classes of CPP version of Msg
[simgrid.git] / src / cxx / Host.cxx
index 07ec58c..db4722b 100644 (file)
   */  \r
 #include <Host.hpp>\r
 \r
+#include <InvalidArgumentException.hpp>\r
+#include <BadAllocException.hpp>\r
+#include <HostNotFoundException.hpp>\r
+#include <MsgException.hpp>\r
+\r
+#include <Task.hpp>\r
+#include <Process.hpp>\r
+\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+\r
+#include <msg/msg.h>\r
+#include <msg/private.h>\r
+\r
+#include <xbt/fifo.h>\r
+\r
 namespace SimGrid\r
 {\r
        namespace Msg\r
@@ -37,11 +53,11 @@ namespace SimGrid
                \r
                \r
                Host& Host::getByName(const char* hostName)\r
-               throw(HostNotFoundException, InvalidParameterException, BadAllocException)\r
+               throw(HostNotFoundException, InvalidArgumentException, BadAllocException)\r
                {\r
                        // check the parameters\r
                        if(!hostName)\r
-                               throw InvalidParmeterException("hostName");\r
+                               throw InvalidArgumentException("hostName");\r
                                \r
                        m_host_t nativeHost = NULL;     // native host.\r
                        Host* host = NULL;                      // wrapper host.\r
@@ -53,7 +69,7 @@ namespace SimGrid
                        { // native host not associated yet with  its wrapper\r
                        \r
                                // instanciate a new wrapper \r
-                               if(!(host = new Host())\r
+                               if(!(host = new Host()))\r
                                        throw BadAllocException(hostName);\r
                                \r
                                host->nativeHost = nativeHost; \r
@@ -96,19 +112,19 @@ namespace SimGrid
                }\r
                \r
                void Host::all(Host*** hosts, int* len) \r
-               throw(InvalidParameterException, BadAllocException) \r
+               throw(InvalidArgumentException, BadAllocException) \r
                {\r
-                       /* check the parameters */\r
+                       // check the parameters\r
                        if(!hosts)\r
-                               throw InvalidParameterException("hosts");\r
+                               throw InvalidArgumentException("hosts");\r
                                \r
                        if(len < 0)\r
-                               throw InvalidParameterException("len parameter must be positive");\r
+                               throw InvalidArgumentException("len parameter must be positive");\r
                        \r
                        int count = xbt_fifo_size(msg_global->host);\r
                        \r
                        if(*len < count)\r
-                               throw InvalidParameterException("len parameter must be more than the number of installed host\n (use Host::getNumber() to get the number of hosts)");\r
+                               throw InvalidArgumentException("len parameter must be more than the number of installed host\n (use Host::getNumber() to get the number of hosts)");\r
                        \r
                        int index;\r
                        m_host_t nativeHost;\r
@@ -123,7 +139,7 @@ namespace SimGrid
                        \r
                                if(!host) \r
                                {\r
-                                       if(!(host = new Host())\r
+                                       if(!(host = new Host()))\r
                                        {\r
                                                // release all allocated memory.\r
                                                for(int i = 0; i < index; i++)\r
@@ -164,7 +180,7 @@ namespace SimGrid
                \r
                double Host::getSpeed(void) const\r
                {\r
-                       return MSG_get_host_speed(nativeHost->simdata->smx_host);\r
+                       return MSG_get_host_speed(nativeHost);\r
                }\r
                \r
                bool Host::hasData(void) const\r
@@ -172,31 +188,42 @@ namespace SimGrid
                        return (NULL != this->data);\r
                }\r
                \r
-               bool Host::isAvailable(void) const\r
+               int Host::isAvailable(void) const\r
                {\r
-                       return (bool)SIMIX_host_get_state(nativeHost->simdata->smx_host);\r
+                       return SIMIX_host_get_state(nativeHost->simdata->smx_host);\r
                }\r
                \r
                void Host::put(int channel, const Task& rTask) \r
-               throw(MsgException, InvalidParameterException)\r
+               throw(MsgException, InvalidArgumentException)\r
                {\r
                        // checks the parameters\r
                        if(channel < 0)\r
-                               throw InvalidParameterException("channel (must be more or equal to zero)");\r
+                               throw InvalidArgumentException("channel (must be more or equal to zero)");\r
                                \r
                        if(MSG_OK != MSG_task_put_with_timeout(rTask.nativeTask, nativeHost, channel , -1.0))\r
                                throw MsgException("MSG_task_put_with_timeout() failed");\r
                } \r
+\r
+               void Host::put(int channel, Task* task) \r
+               throw(MsgException, InvalidArgumentException)\r
+               {\r
+                       // checks the parameters\r
+                       if(channel < 0)\r
+                               throw InvalidArgumentException("channel (must be more or equal to zero)");\r
+                               \r
+                       if(MSG_OK != MSG_task_put_with_timeout(task->nativeTask, nativeHost, channel , -1.0))\r
+                               throw MsgException("MSG_task_put_with_timeout() failed");\r
+               } \r
                \r
                void Host::put(int channel, const Task& rTask, double timeout) \r
-               throw(MsgException, InvalidParameterException) \r
+               throw(MsgException, InvalidArgumentException) \r
                {\r
                        // checks the parameters\r
                        if(channel < 0)\r
-                               throw InvalidParameterException("channel (must be more or equal to zero)");\r
+                               throw InvalidArgumentException("channel (must be more or equal to zero)");\r
                                \r
                        if(timeout < 0.0 && timeout != -1.0)\r
-                               throw InvalidParameterException("timeout (must be more or equal to zero or equal to -1.0)");    \r
+                               throw InvalidArgumentException("timeout (must be more or equal to zero or equal to -1.0)");     \r
                                \r
                                \r
                    if(MSG_OK != MSG_task_put_with_timeout(rTask.nativeTask, nativeHost, channel , timeout))\r
@@ -204,25 +231,25 @@ namespace SimGrid
                }\r
                \r
                void Host::putBounded(int channel, const Task& rTask, double maxRate) \r
-               throw(MsgException, InvalidParameterException)\r
+               throw(MsgException, InvalidArgumentException)\r
                {\r
                    // checks the parameters\r
                        if(channel < 0)\r
-                               throw InvalidParameterException("channel (must be more or equal to zero)");\r
+                               throw InvalidArgumentException("channel (must be more or equal to zero)");\r
                                \r
                        if(maxRate < 0.0 && maxRate != -1.0)\r
-                               throw InvalidParameterException("maxRate (must be more or equal to zero or equal to -1.0)");    \r
+                               throw InvalidArgumentException("maxRate (must be more or equal to zero or equal to -1.0)");     \r
                    \r
                        if(MSG_OK != MSG_task_put_bounded(rTask.nativeTask, nativeHost, channel, maxRate))\r
                                throw MsgException("MSG_task_put_bounded() failed");\r
                }\r
                \r
                void Host::send(const Task& rTask) \r
-               throw(NativeException)  \r
+               throw(MsgException)  \r
                {       \r
                        MSG_error_t rv;\r
                        \r
-                       char* alias = (char*)calloc(strlen(this->getName() + strlen(Process::currentProcess().getName()) + 2);\r
+                       char* alias = (char*)calloc(strlen(this->getName())+ strlen(Process::currentProcess().getName()) + 2, sizeof(char));\r
                                \r
                        if(!alias)\r
                                throw BadAllocException("alias");\r
@@ -238,25 +265,26 @@ namespace SimGrid
                } \r
                \r
                void Host::send(const char* alias, const Task& rTask) \r
-               throw(InvalidParameterException, MsgException) \r
+               throw(InvalidArgumentException, MsgException) \r
                {\r
                        // check the parameters\r
                        if(!alias)\r
-                               throw InvalidParmeterException("alias (must not be NULL)");\r
+                               throw InvalidArgumentException("alias (must not be NULL)");\r
                        \r
                        if(MSG_OK != MSG_task_send_with_timeout(rTask.nativeTask, alias, -1.0))\r
                                throw MsgException("MSG_task_send_with_timeout() failed");\r
                }\r
                \r
                void Host::send(const Task& rTask, double timeout) \r
-               throw(InvalidParameterException, BadAllocException, MsgException) \r
+               throw(InvalidArgumentException, BadAllocException, MsgException) \r
                {\r
                        // check the parameters\r
                        if(timeout < 0 && timeout != -1.0)\r
-                               throw InvalidParameterException("timeout (must be positive or equal to zero or equal to -1.0)");\r
+                               throw InvalidArgumentException("timeout (must be positive or equal to zero or equal to -1.0)");\r
+                       \r
                        MSG_error_t rv;\r
                        \r
-                       char* alias = (char*)calloc(strlen(this->getName() + strlen(Process::currentProcess().getName()) + 2);\r
+                       char* alias = (char*)calloc(strlen(this->getName()) + strlen(Process::currentProcess().getName()) + 2, sizeof(char));\r
                                \r
                        if(!alias)\r
                                throw BadAllocException("alias");\r
@@ -273,15 +301,15 @@ namespace SimGrid
                }\r
                \r
                void Host::send(const char* alias, const Task& rTask, double timeout) \r
-               throw(InvalidParameterException, MsgException) \r
+               throw(InvalidArgumentException, MsgException) \r
                {\r
                        // check the parameter\r
                        \r
                        if(!alias)\r
-                               throw InvalidParmeterException("alias (must not be NULL)");\r
+                               throw InvalidArgumentException("alias (must not be NULL)");\r
                                \r
                        if(timeout < 0 && timeout != -1.0)\r
-                               throw InvalidParameterException("timeout (must be positive or equal to zero or equal to -1.0)");\r
+                               throw InvalidArgumentException("timeout (must be positive or equal to zero or equal to -1.0)");\r
                                        \r
                        if(MSG_OK != MSG_task_send_with_timeout(rTask.nativeTask, alias, timeout))\r
                                throw MsgException("MSG_task_send_with_timeout() failed");\r
@@ -289,14 +317,14 @@ namespace SimGrid
                \r
                \r
                void Host::sendBounded(const Task& rTask, double maxRate) \r
-               throw(InvalidParameterException, BadAllocException, MsgException) \r
+               throw(InvalidArgumentException, BadAllocException, MsgException) \r
                {\r
                        if(maxRate < 0 && maxRate != -1.0)\r
-                               throw InvalidParameterException("maxRate (must be positive or equal to zero or equal to -1.0)");\r
+                               throw InvalidArgumentException("maxRate (must be positive or equal to zero or equal to -1.0)");\r
                        \r
                        MSG_error_t rv;\r
                        \r
-                       char* alias = (char*)calloc(strlen(this->getName() + strlen(Process::currentProcess().getName()) + 2);\r
+                       char* alias = (char*)calloc(strlen(this->getName()) + strlen(Process::currentProcess().getName()) + 2, sizeof(char));\r
                        \r
                        if(!alias)\r
                                throw BadAllocException("alias");\r
@@ -312,18 +340,18 @@ namespace SimGrid
                }  \r
                \r
                void Host::sendBounded(const char* alias, const Task& rTask, double maxRate) \r
-               throw(InvalidParameterException, MsgException) \r
+               throw(InvalidArgumentException, MsgException) \r
                {\r
                        // check the parameters\r
                        if(!alias)\r
-                               throw InvalidParameterException("alias (must not be NULL)");\r
+                               throw InvalidArgumentException("alias (must not be NULL)");\r
                        \r
                        if(maxRate < 0 && maxRate != -1)\r
-                               throw InvalidParameterException("maxRate (must be positive or equal to zero or equal to -1.0)");\r
+                               throw InvalidArgumentException("maxRate (must be positive or equal to zero or equal to -1.0)");\r
                        \r
                        if(MSG_OK != MSG_task_send_bounded(rTask.nativeTask, alias, maxRate))\r
                                throw MsgException("MSG_task_send_bounded() failed");\r
                        \r
-               } \r
+               }\r
        } // namspace Msg\r
 } // namespace SimGrid
\ No newline at end of file