*/ \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
\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
{ // 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
}\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
\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
\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
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
}\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
} \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
}\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
\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
} \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