-#include "BasicTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(BasicTask, Task);
\ No newline at end of file
+#include "BasicTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(BasicTask, Task)
-#ifndef BASIC_TASK_HPP\r
-#define BASIC_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class BasicTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(BasicTask);\r
-public:\r
- \r
- // Default constructor.\r
- BasicTask() {}\r
- \r
- // Destructor\r
- virtual ~BasicTask() {}\r
- BasicTask(const char* name, double computeDuration, double messageSize)\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task(name, computeDuration, messageSize){}\r
-\r
- /*virtual const BasicTask& operator = (const BasicTask& rTask) {\r
- Task::operator=(rTask);\r
- return *this;\r
- }*/\r
-};\r
-\r
-typedef BasicTask* BasicTaskPtr;\r
-\r
-\r
-#endif // !BASIC_TASK_HPP
\ No newline at end of file
+#ifndef BASIC_TASK_HPP
+#define BASIC_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class BasicTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(BasicTask);
+public:
+
+ // Default constructor.
+ BasicTask() {}
+
+ // Destructor
+ virtual ~BasicTask()
+ throw (MsgException) {}
+ BasicTask(const char* name, double computeDuration, double messageSize)
+ throw (InvalidArgumentException, NullPointerException)
+ :Task(name, computeDuration, messageSize){}
+
+ /*virtual const BasicTask& operator = (const BasicTask& rTask) {
+ Task::operator=(rTask);
+ return *this;
+ }*/
+};
+
+typedef BasicTask* BasicTaskPtr;
+
+
+#endif // !BASIC_TASK_HPP
-#include "FinalizeTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task);
\ No newline at end of file
+#include "FinalizeTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task)
-#ifndef FINALIZE_TASK_HPP\r
-#define FINALIZE_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class FinalizeTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(FinalizeTask);\r
-public:\r
- \r
- // Default constructor.\r
- FinalizeTask()\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task("finalize", 0.0, 0.0){}\r
- \r
- // Destructor\r
- virtual ~FinalizeTask() {}\r
- \r
-};\r
-\r
-\r
-\r
-\r
-#endif // !FINALIZE_TASK_HPP
\ No newline at end of file
+#ifndef FINALIZE_TASK_HPP
+#define FINALIZE_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class FinalizeTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(FinalizeTask);
+public:
+
+ // Default constructor.
+ FinalizeTask()
+ throw (InvalidArgumentException, NullPointerException)
+ :Task("finalize", 0.0, 0.0){}
+
+ // Destructor
+ virtual ~FinalizeTask()
+ throw (MsgException) {}
+
+};
+
+#endif // !FINALIZE_TASK_HPP
-#include "Forwarder.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Forwarder, Process);\r
-\r
-int Forwarder::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- int aliasCount = argc;\r
- \r
- int taskCount = 0;\r
- \r
- Task* taskReceived;\r
- Task* finalizeTask;\r
- BasicTask* basicTask;\r
- \r
- while(true) \r
- {\r
- taskReceived = Task::receive();\r
- \r
- if(taskReceived->isInstanceOf("FinalizeTask")) \r
- {\r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- for (int i = 0; i < aliasCount; i++) \r
- {\r
- finalizeTask = new FinalizeTask();\r
- finalizeTask->send(argv[i]);\r
- }\r
- \r
- delete taskReceived;\r
- \r
- break;\r
- }\r
- \r
- basicTask = reinterpret_cast<BasicTask*>(taskReceived);\r
- \r
- info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Sending \"") + TEXT_(basicTask->getName()) + TEXT_("\" to \"") + TEXT_(argv[taskCount % aliasCount]));\r
- \r
- basicTask->send(argv[taskCount % aliasCount]);\r
- \r
- taskCount++;\r
- }\r
- \r
- \r
- info("I'm done. See you!");\r
-\r
- delete this;\r
- \r
- return 0;\r
-}
\ No newline at end of file
+#include "Forwarder.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Forwarder, Process)
+
+int Forwarder::main(int argc, char** argv)
+{
+ info("Hello");
+
+ int aliasCount = argc;
+
+ int taskCount = 0;
+
+ Task* taskReceived;
+ Task* finalizeTask;
+ BasicTask* basicTask;
+
+ while(true)
+ {
+ taskReceived = Task::receive();
+
+ if(taskReceived->isInstanceOf("FinalizeTask"))
+ {
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int i = 0; i < aliasCount; i++)
+ {
+ finalizeTask = new FinalizeTask();
+ finalizeTask->send(argv[i]);
+ }
+
+ delete taskReceived;
+
+ break;
+ }
+
+ basicTask = reinterpret_cast<BasicTask*>(taskReceived);
+
+ info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Sending \"") + TEXT_(basicTask->getName()) + TEXT_("\" to \"") + TEXT_(argv[taskCount % aliasCount]));
+
+ basicTask->send(argv[taskCount % aliasCount]);
+
+ taskCount++;
+ }
+
+
+ info("I'm done. See you!");
+
+ delete this;
+
+ return 0;
+}
-#ifndef FORWARDER_HPP\r
-#define FORWARDER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Forwarder : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Forwarder);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Forwarder(){}\r
- \r
- // Destructor.\r
- virtual ~Forwarder(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !FORWARDER_HPP
\ No newline at end of file
+#ifndef FORWARDER_HPP
+#define FORWARDER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Forwarder : public Process
+{
+ MSG_DECLARE_DYNAMIC(Forwarder);
+
+ public:
+
+ // Default constructor.
+ Forwarder(){}
+
+ // Destructor.
+ virtual ~Forwarder(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !FORWARDER_HPP
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
- \r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+
+}
-#include "Master.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Master, Process);\r
-\r
-int Master::main(int argc, char** argv)\r
-{\r
- int taskCount; \r
- double taskComputeSize; \r
- double taskCommunicateSize;\r
- \r
- info("Hello");\r
- \r
- info(TEXT_("argc=") + TEXT_(argc));\r
- \r
- for (int i = 0; i< argc; i++) \r
- info(TEXT_("argv:") + TEXT_(argv[i]));\r
- \r
- sscanf(argv[0],"%d", &taskCount);\r
- sscanf(argv[1],"%lg", &taskComputeSize);\r
- sscanf(argv[2],"%lg", &taskCommunicateSize);\r
- \r
- BasicTaskPtr* basicTasks = new BasicTaskPtr[taskCount];\r
- \r
- for (int i = 0; i < taskCount; i++) \r
- basicTasks[i] = new BasicTask((TEXT_("Task_") + TEXT_(i)), taskComputeSize, taskCommunicateSize); \r
- \r
- int aliasCount = argc - 3;\r
- \r
- char** aliases = (char**) calloc(aliasCount, sizeof(char*));\r
- \r
- for(int i = 3; i < argc ; i++) \r
- aliases[i - 3] = _strdup(argv[i]);\r
- \r
- info(TEXT_("Got ") + TEXT_(aliasCount) + TEXT_(" alias(es) :"));\r
- \r
- for (int i = 0; i < aliasCount; i++)\r
- info(TEXT_("\t") + TEXT_(aliases[i]));\r
- \r
- info(TEXT_("Got ") + TEXT_(taskCount) + TEXT_(" task to process."));\r
- \r
- for (int i = 0; i < taskCount; i++) \r
- { \r
- info(TEXT_("Sending \"") + TEXT_(basicTasks[i]->getName()) + TEXT_("\" to \"") + TEXT_(aliases[i % aliasCount]) + TEXT_("\""));\r
- \r
- /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))\r
- info("Hey ! It's me ! ");\r
- */\r
- \r
- basicTasks[i]->send(aliases[i % aliasCount]);\r
- }\r
- \r
- info("Send completed");\r
- \r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- FinalizeTask* finalizeTask;\r
- \r
- for (int i = 0; i < aliasCount; i++) \r
- {\r
- finalizeTask = new FinalizeTask();\r
- finalizeTask->send(aliases[i]);\r
- \r
- }\r
- \r
- info("Goodbye now!");\r
-\r
- delete[] basicTasks;\r
- delete[] aliases;\r
-\r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Master.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Master, Process)
+
+int Master::main(int argc, char** argv)
+{
+ int taskCount;
+ double taskComputeSize;
+ double taskCommunicateSize;
+
+ info("Hello");
+
+ info(TEXT_("argc=") + TEXT_(argc));
+
+ for (int i = 0; i< argc; i++)
+ info(TEXT_("argv:") + TEXT_(argv[i]));
+
+ sscanf(argv[0],"%d", &taskCount);
+ sscanf(argv[1],"%lg", &taskComputeSize);
+ sscanf(argv[2],"%lg", &taskCommunicateSize);
+
+ BasicTaskPtr* basicTasks = new BasicTaskPtr[taskCount];
+
+ for (int i = 0; i < taskCount; i++)
+ basicTasks[i] = new BasicTask((TEXT_("Task_") + TEXT_(i)), taskComputeSize, taskCommunicateSize);
+
+ int aliasCount = argc - 3;
+
+ char** aliases = (char**) calloc(aliasCount, sizeof(char*));
+
+ for(int i = 3; i < argc ; i++)
+ aliases[i - 3] = _strdup(argv[i]);
+
+ info(TEXT_("Got ") + TEXT_(aliasCount) + TEXT_(" alias(es) :"));
+
+ for (int i = 0; i < aliasCount; i++)
+ info(TEXT_("\t") + TEXT_(aliases[i]));
+
+ info(TEXT_("Got ") + TEXT_(taskCount) + TEXT_(" task to process."));
+
+ for (int i = 0; i < taskCount; i++)
+ {
+ info(TEXT_("Sending \"") + TEXT_(basicTasks[i]->getName()) + TEXT_("\" to \"") + TEXT_(aliases[i % aliasCount]) + TEXT_("\""));
+
+ /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))
+ info("Hey ! It's me ! ");
+ */
+
+ basicTasks[i]->send(aliases[i % aliasCount]);
+ }
+
+ info("Send completed");
+
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ FinalizeTask* finalizeTask;
+
+ for (int i = 0; i < aliasCount; i++)
+ {
+ finalizeTask = new FinalizeTask();
+ finalizeTask->send(aliases[i]);
+
+ }
+
+ info("Goodbye now!");
+
+ delete[] basicTasks;
+ delete[] aliases;
+
+ delete this;
+
+ return 0;
+}
-#ifndef MASTER_HPP\r
-#define MASTER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Master : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Master);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Master(){}\r
- \r
- // Destructor.\r
- virtual ~Master(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-#endif // !MASTER_HPP
\ No newline at end of file
+#ifndef MASTER_HPP
+#define MASTER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Master : public Process
+{
+ MSG_DECLARE_DYNAMIC(Master);
+
+ public:
+
+ // Default constructor.
+ Master(){}
+
+ // Destructor.
+ virtual ~Master(){}
+
+ int main(int argc, char** argv);
+
+};
+
+#endif // !MASTER_HPP
-#include "Slave.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include "BasicTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Slave, Process);\r
-\r
-int Slave::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- Task* receivedTask;\r
- BasicTask* basicTask;\r
- \r
- while(true) \r
- { \r
- receivedTask = Task::receive(); \r
- \r
- if(receivedTask->isInstanceOf("FinalizeTask")) \r
- {\r
- delete receivedTask;\r
- break;\r
- }\r
- \r
- basicTask = reinterpret_cast<BasicTask*>(receivedTask);\r
- \r
- info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Processing \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- \r
- basicTask->execute();\r
- \r
- info(TEXT_("\"") + TEXT_(basicTask->getName()) + TEXT_("\" done "));\r
- \r
- delete basicTask;\r
- }\r
- \r
- info("Received Finalize. I'm done. See you!");\r
- \r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Slave.hpp"
+#include "FinalizeTask.hpp"
+#include "BasicTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Slave, Process)
+
+int Slave::main(int argc, char** argv)
+{
+ info("Hello");
+
+ Task* receivedTask;
+ BasicTask* basicTask;
+
+ while(true)
+ {
+ receivedTask = Task::receive();
+
+ if(receivedTask->isInstanceOf("FinalizeTask"))
+ {
+ delete receivedTask;
+ break;
+ }
+
+ basicTask = reinterpret_cast<BasicTask*>(receivedTask);
+
+ info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Processing \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+
+ basicTask->execute();
+
+ info(TEXT_("\"") + TEXT_(basicTask->getName()) + TEXT_("\" done "));
+
+ delete basicTask;
+ }
+
+ info("Received Finalize. I'm done. See you!");
+
+ delete this;
+
+ return 0;
+}
-#ifndef SLAVE_HPP\r
-#define SLAVE_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Slave : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Slave);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Slave(){}\r
- \r
- // Destructor.\r
- virtual ~Slave(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !SLAVE_HPP
\ No newline at end of file
+#ifndef SLAVE_HPP
+#define SLAVE_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Slave : public Process
+{
+ MSG_DECLARE_DYNAMIC(Slave);
+
+ public:
+
+ // Default constructor.
+ Slave(){}
+
+ // Destructor.
+ virtual ~Slave(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !SLAVE_HPP
+
-#include "BasicTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(BasicTask, Task);
\ No newline at end of file
+#include "BasicTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(BasicTask, Task)
-#ifndef BASIC_TASK_HPP\r
-#define BASIC_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class BasicTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(BasicTask);\r
-public:\r
- \r
- // Default constructor.\r
- BasicTask() {}\r
- \r
- // Destructor\r
- virtual ~BasicTask() {}\r
- BasicTask(const char* name, double computeDuration, double messageSize)\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task(name, computeDuration, messageSize){}\r
-};\r
-\r
-typedef BasicTask* BasicTaskPtr;\r
-\r
-\r
-#endif // !BASIC_TASK_HPP
\ No newline at end of file
+#ifndef BASIC_TASK_HPP
+#define BASIC_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class BasicTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(BasicTask);
+public:
+
+ // Default constructor.
+ BasicTask() {}
+
+ // Destructor
+ virtual ~BasicTask()
+ throw(MsgException) {}
+ BasicTask(const char* name, double computeDuration, double messageSize)
+ throw (InvalidArgumentException, NullPointerException)
+ :Task(name, computeDuration, messageSize){}
+};
+
+typedef BasicTask* BasicTaskPtr;
+
+
+#endif // !BASIC_TASK_HPP
-#include "FinalizeTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task);
\ No newline at end of file
+#include "FinalizeTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task)
-#ifndef FINALIZE_TASK_HPP\r
-#define FINALIZE_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class FinalizeTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(FinalizeTask);\r
-public:\r
- \r
- // Default constructor.\r
- FinalizeTask()\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task("finalize", 0.0, 0.0){}\r
- \r
- // Destructor\r
- virtual ~FinalizeTask() {}\r
- \r
-};\r
-\r
-\r
-\r
-\r
-#endif // !FINALIZE_TASK_HPP
\ No newline at end of file
+#ifndef FINALIZE_TASK_HPP
+#define FINALIZE_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class FinalizeTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(FinalizeTask);
+public:
+
+ // Default constructor.
+ FinalizeTask()
+ throw (InvalidArgumentException, NullPointerException)
+ :Task("finalize", 0.0, 0.0){}
+
+ // Destructor
+ virtual ~FinalizeTask()
+ throw(MsgException) {}
+
+};
+
+
+
+
+#endif // !FINALIZE_TASK_HPP
-#include "Forwarder.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Forwarder, Process);\r
-\r
-\r
-int Forwarder::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- int slavesCount = argc;\r
- \r
- Host* slaves = new Host[slavesCount];\r
- \r
- for (int i = 0; i < argc; i++) \r
- {\r
- try \r
- { \r
- slaves[i] = Host::getByName(argv[i]);\r
- } \r
- catch (HostNotFoundException e) \r
- {\r
- error(TEXT_(e.toString()));\r
- error("Buggy deployment file");\r
- exit(1);\r
- }\r
- }\r
- \r
- int taskCount = 0;\r
-\r
- while(true) \r
- {\r
- Task* t = Task::get(0); \r
- \r
- if(t->isInstanceOf("FinalizeTask")) \r
- {\r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- for (int cpt = 0; cpt< slavesCount; cpt++) \r
- slaves[cpt].put(0, new FinalizeTask());\r
-\r
- delete t;\r
-\r
- break;\r
- }\r
-\r
- info(TEXT_("Received \"") + TEXT_(t->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Sending \"") + TEXT_(t->getName()) + TEXT_("\" to \"") + TEXT_(slaves[taskCount % slavesCount].getName()) + TEXT_("\""));\r
- \r
- slaves[taskCount % slavesCount].put(0, t);\r
- \r
- taskCount++;\r
- }\r
- \r
- \r
- info("I'm done. See you!");\r
- \r
- delete[] slaves;\r
-\r
- delete this;\r
- \r
- return 0;\r
-}
\ No newline at end of file
+#include "Forwarder.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Forwarder, Process)
+
+
+int Forwarder::main(int argc, char** argv)
+{
+ info("Hello");
+
+ int slavesCount = argc;
+
+ Host* slaves = new Host[slavesCount];
+
+ for (int i = 0; i < argc; i++)
+ {
+ try
+ {
+ slaves[i] = Host::getByName(argv[i]);
+ }
+ catch (HostNotFoundException e)
+ {
+ error(TEXT_(e.toString()));
+ error("Buggy deployment file");
+ exit(1);
+ }
+ }
+
+ int taskCount = 0;
+
+ while(true)
+ {
+ Task* t = Task::get(0);
+
+ if(t->isInstanceOf("FinalizeTask"))
+ {
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int cpt = 0; cpt< slavesCount; cpt++)
+ slaves[cpt].put(0, new FinalizeTask());
+
+ delete t;
+
+ break;
+ }
+
+ info(TEXT_("Received \"") + TEXT_(t->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Sending \"") + TEXT_(t->getName()) + TEXT_("\" to \"") + TEXT_(slaves[taskCount % slavesCount].getName()) + TEXT_("\""));
+
+ slaves[taskCount % slavesCount].put(0, t);
+
+ taskCount++;
+ }
+
+
+ info("I'm done. See you!");
+
+ delete[] slaves;
+
+ delete this;
+
+ return 0;
+}
-#ifndef FORWARDER_HPP\r
-#define FORWARDER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Forwarder : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Forwarder);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Forwarder(){}\r
- \r
- // Destructor.\r
- virtual ~Forwarder(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !FORWARDER_HPP
\ No newline at end of file
+#ifndef FORWARDER_HPP
+#define FORWARDER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Forwarder : public Process
+{
+ MSG_DECLARE_DYNAMIC(Forwarder);
+
+ public:
+
+ // Default constructor.
+ Forwarder(){}
+
+ // Destructor.
+ virtual ~Forwarder(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !FORWARDER_HPP
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
-\r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+
+}
+
-#include "Master.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-#include <iostream>\r
-using namespace std;\r
-\r
-\r
-#ifndef BUFFMAX\r
-#define BUFFMAX 260\r
-#endif\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Master, Process);\r
-\r
-int Master::main(int argc, char** argv)\r
-{\r
- int channel = 0;\r
- char buff[BUFFMAX + 1] = {0};\r
- int numberOfTasks; \r
- double taskComputeSize; \r
- double taskCommunicateSize;\r
- StringHelper s;\r
-\r
- if (argc < 3) \r
- {\r
- error("Master needs 3 arguments");\r
- exit(1);\r
- }\r
- \r
- info("Hello");\r
- \r
- int slaveCount = 0;\r
- Host* slaves = NULL;\r
-\r
- \r
- info( TEXT_("argc=") + TEXT_(argc));\r
- \r
- for (int i = 0; i< argc; i++) \r
- info(TEXT_("argv:") + TEXT_(argv[i]));\r
- \r
- sscanf(argv[0],"%d", &numberOfTasks);\r
- \r
- sscanf(argv[1],"%lg", &taskComputeSize);\r
- \r
- sscanf(argv[2],"%lg", &taskCommunicateSize);\r
- \r
- BasicTaskPtr* todo = new BasicTaskPtr[numberOfTasks];\r
- \r
- for (int i = 0; i < numberOfTasks; i++) \r
- todo[i] = new BasicTask((TEXT_("Task_") + TEXT_(i)), taskComputeSize, taskCommunicateSize);\r
- \r
- slaveCount = argc - 3;\r
- slaves = new Host[slaveCount];\r
- \r
- for(int i = 3; i < argc ; i++) \r
- {\r
- try \r
- {\r
- slaves[i-3] = Host::getByName(argv[i]);\r
- }\r
- \r
- catch(HostNotFoundException e) \r
- {\r
- cerr << e.toString() <<". Stopping Now!" << endl;\r
- exit(1);\r
- }\r
- }\r
-\r
- info(TEXT_("Got slave(s) :") + TEXT_(slaveCount));\r
- \r
- for (int i = 0; i < slaveCount; i++)\r
- info(TEXT_("\t") + TEXT_(slaves[i].getName()));\r
- \r
- info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));\r
- \r
- for (int i = 0; i < numberOfTasks; i++) \r
- {\r
- info(TEXT_("Sending \"") + TEXT_(todo[i]->getName()) + TEXT_("\" to \"") + TEXT_(slaves[i % slaveCount].getName()) + TEXT_("\""));\r
- \r
- if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName())) \r
- info("Hey ! It's me ! ");\r
-\r
- slaves[i % slaveCount].put(channel, todo[i]);\r
- }\r
- \r
- info("Send completed");\r
- \r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- for (int i = 0; i < slaveCount; i++) \r
- slaves[i].put(channel, new FinalizeTask());\r
-\r
- delete[] todo;\r
- delete[] slaves;\r
- \r
- info("Goodbye now!");\r
-\r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Master.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+#include <iostream>
+using namespace std;
+
+
+#ifndef BUFFMAX
+#define BUFFMAX 260
+#endif
+
+MSG_IMPLEMENT_DYNAMIC(Master, Process)
+
+int Master::main(int argc, char** argv)
+{
+ int channel = 0;
+
+ int numberOfTasks;
+ double taskComputeSize;
+ double taskCommunicateSize;
+ StringHelper s;
+
+ if (argc < 3)
+ {
+ error("Master needs 3 arguments");
+ exit(1);
+ }
+
+ info("Hello");
+
+ int slaveCount = 0;
+ Host* slaves = NULL;
+
+
+ info( TEXT_("argc=") + TEXT_(argc));
+
+ for (int i = 0; i< argc; i++)
+ info(TEXT_("argv:") + TEXT_(argv[i]));
+
+ sscanf(argv[0],"%d", &numberOfTasks);
+
+ sscanf(argv[1],"%lg", &taskComputeSize);
+
+ sscanf(argv[2],"%lg", &taskCommunicateSize);
+
+ BasicTaskPtr* todo = new BasicTaskPtr[numberOfTasks];
+
+ for (int i = 0; i < numberOfTasks; i++)
+ todo[i] = new BasicTask((TEXT_("Task_") + TEXT_(i)), taskComputeSize, taskCommunicateSize);
+
+ slaveCount = argc - 3;
+ slaves = new Host[slaveCount];
+
+ for(int i = 3; i < argc ; i++)
+ {
+ try
+ {
+ slaves[i-3] = Host::getByName(argv[i]);
+ }
+
+ catch(HostNotFoundException e)
+ {
+ cerr << e.toString() <<". Stopping Now!" << endl;
+ exit(1);
+ }
+ }
+
+ info(TEXT_("Got slave(s) :") + TEXT_(slaveCount));
+
+ for (int i = 0; i < slaveCount; i++)
+ info(TEXT_("\t") + TEXT_(slaves[i].getName()));
+
+ info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));
+
+ for (int i = 0; i < numberOfTasks; i++)
+ {
+ info(TEXT_("Sending \"") + TEXT_(todo[i]->getName()) + TEXT_("\" to \"") + TEXT_(slaves[i % slaveCount].getName()) + TEXT_("\""));
+
+ if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName()))
+ info("Hey ! It's me ! ");
+
+ slaves[i % slaveCount].put(channel, todo[i]);
+ }
+
+ info("Send completed");
+
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int i = 0; i < slaveCount; i++)
+ slaves[i].put(channel, new FinalizeTask());
+
+ delete[] todo;
+ delete[] slaves;
+
+ info("Goodbye now!");
+
+ delete this;
+
+ return 0;
+}
+
-#ifndef MASTER_HPP\r
-#define MASTER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Master : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Master);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Master(){}\r
- \r
- // Destructor.\r
- virtual ~Master(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-#endif // !MASTER_HPP
\ No newline at end of file
+#ifndef MASTER_HPP
+#define MASTER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Master : public Process
+{
+ MSG_DECLARE_DYNAMIC(Master);
+
+ public:
+
+ // Default constructor.
+ Master(){}
+
+ // Destructor.
+ virtual ~Master(){}
+
+ int main(int argc, char** argv);
+
+};
+
+#endif // !MASTER_HPP
-#include "Slave.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <iostream>\r
-using namespace std;\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Slave, Process);\r
-\r
-int Slave::main(int argc, char** argv)\r
-{\r
- info("Hello");;\r
- \r
- while(true) \r
- { \r
- Task* t = Task::get(0); \r
- \r
- if(t->isInstanceOf("FinalizeTask")) \r
- {\r
- delete t;\r
- break;\r
- }\r
- \r
- info(TEXT_("Received \"") + TEXT_(t->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Processing \"") + TEXT_(t->getName()));\r
-\r
- t->execute();\r
- \r
- info(TEXT_("\"") + TEXT_(t->getName()) + TEXT_("\" done "));\r
-\r
- delete t;\r
- }\r
- \r
- info("Received Finalize. I'm done. See you!");\r
- \r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Slave.hpp"
+#include "FinalizeTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <iostream>
+using namespace std;
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Slave, Process)
+
+int Slave::main(int argc, char** argv)
+{
+ info("Hello");;
+
+ while(true)
+ {
+ Task* t = Task::get(0);
+
+ if(t->isInstanceOf("FinalizeTask"))
+ {
+ delete t;
+ break;
+ }
+
+ info(TEXT_("Received \"") + TEXT_(t->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Processing \"") + TEXT_(t->getName()));
+
+ t->execute();
+
+ info(TEXT_("\"") + TEXT_(t->getName()) + TEXT_("\" done "));
+
+ delete t;
+ }
+
+ info("Received Finalize. I'm done. See you!");
+
+ delete this;
+
+ return 0;
+}
-#ifndef SLAVE_HPP\r
-#define SLAVE_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Slave : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Slave);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Slave(){}\r
- \r
- // Destructor.\r
- virtual ~Slave(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !SLAVE_HPP
\ No newline at end of file
+#ifndef SLAVE_HPP
+#define SLAVE_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Slave : public Process
+{
+ MSG_DECLARE_DYNAMIC(Slave);
+
+ public:
+
+ // Default constructor.
+ Slave(){}
+
+ // Destructor.
+ virtual ~Slave(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !SLAVE_HPP
-#include "CommTimeTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(CommTimeTask, Task);
\ No newline at end of file
+#include "CommTimeTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(CommTimeTask, Task)
-#ifndef COMMTIME_TASK_HPP\r
-#define COMMTIME_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class CommTimeTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(CommTimeTask);\r
-\r
-public:\r
-\r
- CommTimeTask()\r
- :Task(NULL, 0.0, 0.0){}\r
- \r
- // Default constructor.\r
- CommTimeTask(const char* name, double computeDuration, double messageSize)\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task(name, computeDuration, messageSize){}\r
- \r
- // Destructor\r
- virtual ~CommTimeTask() {}\r
- \r
- void setTime(double timeVal)\r
- {\r
- this->timeVal = timeVal;\r
- }\r
- \r
- double getTime() \r
- {\r
- return timeVal;\r
- }\r
- \r
-private :\r
- \r
- double timeVal;\r
-};\r
-\r
-\r
-\r
-\r
-#endif // !COMMTIME_TASK_HPP
\ No newline at end of file
+#ifndef COMMTIME_TASK_HPP
+#define COMMTIME_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class CommTimeTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(CommTimeTask);
+
+public:
+
+ CommTimeTask()
+ :Task(NULL, 0.0, 0.0){}
+
+ // Default constructor.
+ CommTimeTask(const char* name, double computeDuration, double messageSize)
+ throw (InvalidArgumentException, NullPointerException)
+ :Task(name, computeDuration, messageSize){}
+
+ // Destructor
+ virtual ~CommTimeTask()
+ throw(MsgException){}
+
+ void setTime(double timeVal)
+ {
+ this->timeVal = timeVal;
+ }
+
+ double getTime()
+ {
+ return timeVal;
+ }
+
+private :
+
+ double timeVal;
+};
+
+#endif // !COMMTIME_TASK_HPP
-#include "FinalizeTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task);
\ No newline at end of file
+#include "FinalizeTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task)
-#ifndef FINALIZE_TASK_HPP\r
-#define FINALIZE_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class FinalizeTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(FinalizeTask);\r
-public:\r
- \r
- // Default constructor.\r
- FinalizeTask()\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task("finalize", 0.0, 0.0){}\r
- \r
- // Destructor\r
- virtual ~FinalizeTask() {}\r
- \r
-};\r
-\r
-\r
-\r
-\r
-#endif // !FINALIZE_TASK_HPP
\ No newline at end of file
+#ifndef FINALIZE_TASK_HPP
+#define FINALIZE_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class FinalizeTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(FinalizeTask);
+public:
+
+ // Default constructor.
+ FinalizeTask()
+ throw (InvalidArgumentException, NullPointerException)
+ :Task("finalize", 0.0, 0.0){}
+
+ // Destructor
+ virtual ~FinalizeTask()
+ throw(MsgException){}
+
+};
+
+#endif // !FINALIZE_TASK_HPP
+
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+}
-#include "Master.hpp"\r
-#include "CommTimeTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-#include <Msg.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Master, Process);\r
-\r
-int Master::main(int argc, char** argv)\r
-{\r
- int channel = 0;\r
- int numberOfTasks; \r
- double taskComputeSize; \r
- double taskCommunicateSize;\r
-\r
- if (argc < 3) \r
- {\r
- error("Master needs 3 arguments");\r
- exit(1);\r
- }\r
- \r
- info("Hello");\r
- \r
- int slaveCount = 0;\r
- Host* slaves = NULL;\r
- \r
- sscanf(argv[0],"%d", &numberOfTasks);\r
- \r
- sscanf(argv[1],"%lg", &taskComputeSize);\r
- \r
- sscanf(argv[2],"%lg", &taskCommunicateSize);\r
- \r
- \r
- slaveCount = argc - 3;\r
- slaves = new Host[slaveCount];\r
- \r
- for(int i = 3; i < argc ; i++) \r
- {\r
- try \r
- {\r
- slaves[i-3] = Host::getByName(argv[i]);\r
- }\r
- \r
- catch(HostNotFoundException e) \r
- {\r
- error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));\r
- exit(1);\r
- }\r
- }\r
- \r
- info(TEXT_("Got slave(s) :" ) + TEXT_(slaveCount));\r
- \r
- for (int i = 0; i < slaveCount; i++)\r
- info(TEXT_("\t") + TEXT_(slaves[i].getName()));\r
- \r
- info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));\r
- \r
- \r
- for (int i = 0; i < numberOfTasks; i++) \r
- { \r
- CommTimeTask* task = new CommTimeTask(TEXT_("Task_") + TEXT_(i), taskComputeSize, taskCommunicateSize);\r
- task->setTime(getClock());\r
- slaves[i % slaveCount].put(0, task);\r
- \r
- }\r
- \r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- for (int i = 0; i < slaveCount; i++) \r
- { \r
- info(TEXT_("Finalize host ") + TEXT_(slaves[i].getName()) + TEXT_(" [") + TEXT_(i) + TEXT_("]"));\r
- slaves[i].put(0, new FinalizeTask());\r
- }\r
- \r
- info("All finalize messages have been dispatched. Goodbye now!");\r
- \r
-\r
- delete[] slaves;\r
- delete this;\r
- return 0;\r
-}
\ No newline at end of file
+#include "Master.hpp"
+#include "CommTimeTask.hpp"
+#include "FinalizeTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+#include <Msg.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Master, Process)
+
+int Master::main(int argc, char** argv)
+{
+ int numberOfTasks;
+ double taskComputeSize;
+ double taskCommunicateSize;
+
+ if (argc < 3)
+ {
+ error("Master needs 3 arguments");
+ exit(1);
+ }
+
+ info("Hello");
+
+ int slaveCount = 0;
+ Host* slaves = NULL;
+
+ sscanf(argv[0],"%d", &numberOfTasks);
+
+ sscanf(argv[1],"%lg", &taskComputeSize);
+
+ sscanf(argv[2],"%lg", &taskCommunicateSize);
+
+
+ slaveCount = argc - 3;
+ slaves = new Host[slaveCount];
+
+ for(int i = 3; i < argc ; i++)
+ {
+ try
+ {
+ slaves[i-3] = Host::getByName(argv[i]);
+ }
+
+ catch(HostNotFoundException e)
+ {
+ error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));
+ exit(1);
+ }
+ }
+
+ info(TEXT_("Got slave(s) :" ) + TEXT_(slaveCount));
+
+ for (int i = 0; i < slaveCount; i++)
+ info(TEXT_("\t") + TEXT_(slaves[i].getName()));
+
+ info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));
+
+
+ for (int i = 0; i < numberOfTasks; i++)
+ {
+ CommTimeTask* task = new CommTimeTask(TEXT_("Task_") + TEXT_(i), taskComputeSize, taskCommunicateSize);
+ task->setTime(getClock());
+ slaves[i % slaveCount].put(0, task);
+
+ }
+
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int i = 0; i < slaveCount; i++)
+ {
+ info(TEXT_("Finalize host ") + TEXT_(slaves[i].getName()) + TEXT_(" [") + TEXT_(i) + TEXT_("]"));
+ slaves[i].put(0, new FinalizeTask());
+ }
+
+ info("All finalize messages have been dispatched. Goodbye now!");
+
+
+ delete[] slaves;
+ delete this;
+ return 0;
+}
-#ifndef MASTER_HPP\r
-#define MASTER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Master : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Master);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Master(){}\r
- \r
- // Destructor.\r
- virtual ~Master(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-#endif // !MASTER_HPP
\ No newline at end of file
+#ifndef MASTER_HPP
+#define MASTER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Master : public Process
+{
+ MSG_DECLARE_DYNAMIC(Master);
+
+ public:
+
+ // Default constructor.
+ Master(){}
+
+ // Destructor.
+ virtual ~Master(){}
+
+ int main(int argc, char** argv);
+
+};
+
+#endif // !MASTER_HPP
-#include "Slave.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include "CommTimeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-#include <Msg.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Slave, Process);\r
-\r
-int Slave::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- while(true) \r
- {\r
- double time1 = getClock(); \r
- Task* t = Task::get(0); \r
- double time2 = getClock();\r
- \r
- if(t->isInstanceOf("FinalizeTask")) \r
- {\r
- delete t;\r
- break;\r
- }\r
- \r
- CommTimeTask* task = reinterpret_cast<CommTimeTask*>(t);\r
- \r
- if(time1 < task->getTime())\r
- time1 = task->getTime();\r
- \r
- //info(TEXT_("Processing \"") + TEXT_(task->getName()) + TEXT_("\" ") + TEXT_(getHost().getName()) + TEXT_(" (Communication time : ") + TEXT_((time2 - time1)) + TEXT_(")"));\r
- \r
- task->execute();\r
- \r
- delete task;\r
- }\r
- \r
- info(TEXT_("Received Finalize. I'm done. See you!"));\r
- \r
- delete this;\r
- return 0;\r
- \r
-}
\ No newline at end of file
+#include "Slave.hpp"
+#include "FinalizeTask.hpp"
+#include "CommTimeTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+#include <Msg.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Slave, Process)
+
+int Slave::main(int argc, char** argv)
+{
+ info("Hello");
+
+ while(true)
+ {
+ double time1 = getClock();
+ Task* t = Task::get(0);
+ double time2 = getClock();
+
+ if(t->isInstanceOf("FinalizeTask"))
+ {
+ delete t;
+ break;
+ }
+
+ CommTimeTask* task = reinterpret_cast<CommTimeTask*>(t);
+
+ if(time1 < task->getTime())
+ time1 = task->getTime();
+
+ info(TEXT_("Processing \"") + TEXT_(task->getName()) + TEXT_("\" ") + TEXT_(getHost().getName()) + TEXT_(" (Communication time : ") + TEXT_((time2 - time1)) + TEXT_(")"));
+
+ task->execute();
+
+ delete task;
+ }
+
+ info(TEXT_("Received Finalize. I'm done. See you!"));
+
+ delete this;
+ return 0;
+
+}
-#ifndef SLAVE_HPP\r
-#define SLAVE_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Slave : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Slave);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Slave(){}\r
- \r
- // Destructor.\r
- virtual ~Slave(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !SLAVE_HPP
\ No newline at end of file
+#ifndef SLAVE_HPP
+#define SLAVE_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Slave : public Process
+{
+ MSG_DECLARE_DYNAMIC(Slave);
+
+ public:
+
+ // Default constructor.
+ Slave(){}
+
+ // Destructor.
+ virtual ~Slave(){}
+
+ int main(int argc, char** argv);
+
+};
+
+#endif // !SLAVE_HPP
-#include "BasicTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(BasicTask, Task);
\ No newline at end of file
+#include "BasicTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(BasicTask, Task)
-#ifndef BASIC_TASK_HPP\r
-#define BASIC_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class BasicTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(BasicTask);\r
-public:\r
- \r
- // Default constructor.\r
- BasicTask() {}\r
- \r
- // Destructor\r
- virtual ~BasicTask() {}\r
- BasicTask(const char* name, double computeDuration, double messageSize)\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task(name, computeDuration, messageSize){}\r
-\r
- /*virtual const BasicTask& operator = (const BasicTask& rTask) {\r
- Task::operator=(rTask);\r
- return *this;\r
- }*/\r
-};\r
-\r
-typedef BasicTask* BasicTaskPtr;\r
-\r
-\r
-#endif // !BASIC_TASK_HPP
\ No newline at end of file
+#ifndef BASIC_TASK_HPP
+#define BASIC_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class BasicTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(BasicTask);
+public:
+
+ // Default constructor.
+ BasicTask() {}
+
+ // Destructor
+ virtual ~BasicTask()
+ throw(MsgException){}
+ BasicTask(const char* name, double computeDuration, double messageSize)
+ throw (InvalidArgumentException, NullPointerException)
+ :Task(name, computeDuration, messageSize){}
+
+ /*virtual const BasicTask& operator = (const BasicTask& rTask) {
+ Task::operator=(rTask);
+ return *this;
+ }*/
+};
+
+typedef BasicTask* BasicTaskPtr;
+
+
+#endif // !BASIC_TASK_HPP
-#include "FinalizeTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task);
\ No newline at end of file
+#include "FinalizeTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task)
-#ifndef FINALIZE_TASK_HPP\r
-#define FINALIZE_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class FinalizeTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(FinalizeTask);\r
-public:\r
- \r
- // Default constructor.\r
- FinalizeTask()\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task("finalize", 0.0, 0.0){}\r
- \r
- // Destructor\r
- virtual ~FinalizeTask() {}\r
- \r
-};\r
-\r
-\r
-\r
-\r
-#endif // !FINALIZE_TASK_HPP
\ No newline at end of file
+#ifndef FINALIZE_TASK_HPP
+#define FINALIZE_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class FinalizeTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(FinalizeTask);
+public:
+
+ // Default constructor.
+ FinalizeTask()
+ throw (InvalidArgumentException, NullPointerException)
+ :Task("finalize", 0.0, 0.0){}
+
+ // Destructor
+ virtual ~FinalizeTask()
+ throw(MsgException){}
+
+};
+
+#endif // !FINALIZE_TASK_HPP
-#include "Forwarder.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Forwarder, Process);\r
-\r
-\r
-int Forwarder::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- int aliasCount = argc;\r
- \r
- int taskCount = 0;\r
- \r
- Task* taskReceived;\r
- Task* finalizeTask;\r
- BasicTask* basicTask;\r
- \r
- while(true) \r
- {\r
- taskReceived = Task::receive(Host::currentHost().getName());\r
- \r
- if(taskReceived->isInstanceOf("FinalizeTask")) \r
- {\r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- for (int i = 0; i < aliasCount; i++) \r
- {\r
- finalizeTask = new FinalizeTask();\r
- finalizeTask->send(argv[i]);\r
- }\r
- \r
- delete taskReceived;\r
- \r
- break;\r
- }\r
- \r
- basicTask = reinterpret_cast<BasicTask*>(taskReceived);\r
- \r
- info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Sending \"") + TEXT_(basicTask->getName()) + TEXT_("\" to \"") + TEXT_(argv[taskCount % aliasCount]) + TEXT_("\""));\r
- \r
- basicTask->send(argv[taskCount % aliasCount]);\r
- \r
- taskCount++;\r
- }\r
- \r
- \r
- info("I'm done. See you!");\r
- \r
- delete this;\r
- return 0;\r
-}
\ No newline at end of file
+#include "Forwarder.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+
+MSG_IMPLEMENT_DYNAMIC(Forwarder, Process)
+
+
+int Forwarder::main(int argc, char** argv)
+{
+ info("Hello");
+
+ int aliasCount = argc;
+
+ int taskCount = 0;
+
+ Task* taskReceived;
+ Task* finalizeTask;
+ BasicTask* basicTask;
+
+ while(true)
+ {
+ taskReceived = Task::receive(Host::currentHost().getName());
+
+ if(taskReceived->isInstanceOf("FinalizeTask"))
+ {
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int i = 0; i < aliasCount; i++)
+ {
+ finalizeTask = new FinalizeTask();
+ finalizeTask->send(argv[i]);
+ }
+
+ delete taskReceived;
+
+ break;
+ }
+
+ basicTask = reinterpret_cast<BasicTask*>(taskReceived);
+
+ info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Sending \"") + TEXT_(basicTask->getName()) + TEXT_("\" to \"") + TEXT_(argv[taskCount % aliasCount]) + TEXT_("\""));
+
+ basicTask->send(argv[taskCount % aliasCount]);
+
+ taskCount++;
+ }
+
+
+ info("I'm done. See you!");
+
+ delete this;
+ return 0;
+}
-#ifndef FORWARDER_HPP\r
-#define FORWARDER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Forwarder : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Forwarder);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Forwarder(){}\r
- \r
- // Destructor.\r
- virtual ~Forwarder(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !FORWARDER_HPP
\ No newline at end of file
+#ifndef FORWARDER_HPP
+#define FORWARDER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Forwarder : public Process
+{
+ MSG_DECLARE_DYNAMIC(Forwarder);
+
+ public:
+
+ // Default constructor.
+ Forwarder(){}
+
+ // Destructor.
+ virtual ~Forwarder(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !FORWARDER_HPP
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
- \r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+
+}
-#include "Master.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Master, Process);\r
-\r
-int Master::main(int argc, char** argv)\r
-{\r
- int taskCount; \r
- double taskComputeSize; \r
- double taskCommunicateSize;\r
- \r
- info("Hello");\r
- \r
- \r
- info(TEXT_("argc=") + TEXT_(argc));\r
- \r
- for (int i = 0; i< argc; i++) \r
- info(TEXT_("argv:") + TEXT_(argv[i]));\r
- \r
- sscanf(argv[0],"%d", &taskCount);\r
- \r
- sscanf(argv[1],"%lg", &taskComputeSize);\r
- \r
- sscanf(argv[2],"%lg", &taskCommunicateSize);\r
- \r
- BasicTaskPtr* basicTasks = new BasicTaskPtr[taskCount];\r
- \r
- for (int i = 0; i < taskCount; i++) \r
- basicTasks[i] = new BasicTask(TEXT_("Task_") + TEXT_(i), taskComputeSize, taskCommunicateSize); \r
- \r
- int aliasCount = argc - 3;\r
- \r
- char** aliases = (char**) calloc(aliasCount, sizeof(char*));\r
- \r
- for(int i = 3; i < argc ; i++) \r
- aliases[i - 3] = _strdup(argv[i]);\r
- \r
- info(TEXT_("Got ") + TEXT_(aliasCount) + TEXT_(" alias(es) :"));\r
- \r
- for (int i = 0; i < aliasCount; i++)\r
- info(TEXT_("\t") + TEXT_(aliases[i]));\r
- \r
- info(TEXT_("Got ") + TEXT_(taskCount) + TEXT_(" task to process."));\r
- \r
- for (int i = 0; i < taskCount; i++) \r
- { \r
- info(TEXT_("Sending \"") + TEXT_(basicTasks[i]->getName()) + TEXT_("\" to \"") + TEXT_(aliases[i % aliasCount]) + TEXT_("\""));\r
-\r
- \r
- /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))\r
- info("Hey ! It's me ! ");\r
- */\r
- \r
- basicTasks[i]->send(aliases[i % aliasCount]);\r
- }\r
- \r
- info("Send completed");\r
- \r
- info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
- \r
- FinalizeTask* finalizeTask;\r
- \r
- for (int i = 0; i < aliasCount; i++) \r
- {\r
- finalizeTask = new FinalizeTask();\r
- finalizeTask->send(aliases[i]);\r
- \r
- }\r
- \r
- info("Goodbye now!");\r
-\r
- delete[] basicTasks;\r
- delete[] aliases;\r
-\r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Master.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Master, Process)
+
+int Master::main(int argc, char** argv)
+{
+ int taskCount;
+ double taskComputeSize;
+ double taskCommunicateSize;
+
+ info("Hello");
+
+
+ info(TEXT_("argc=") + TEXT_(argc));
+
+ for (int i = 0; i< argc; i++)
+ info(TEXT_("argv:") + TEXT_(argv[i]));
+
+ sscanf(argv[0],"%d", &taskCount);
+
+ sscanf(argv[1],"%lg", &taskComputeSize);
+
+ sscanf(argv[2],"%lg", &taskCommunicateSize);
+
+ BasicTaskPtr* basicTasks = new BasicTaskPtr[taskCount];
+
+ for (int i = 0; i < taskCount; i++)
+ basicTasks[i] = new BasicTask(TEXT_("Task_") + TEXT_(i), taskComputeSize, taskCommunicateSize);
+
+ int aliasCount = argc - 3;
+
+ char** aliases = (char**) calloc(aliasCount, sizeof(char*));
+
+ for(int i = 3; i < argc ; i++)
+ aliases[i - 3] = _strdup(argv[i]);
+
+ info(TEXT_("Got ") + TEXT_(aliasCount) + TEXT_(" alias(es) :"));
+
+ for (int i = 0; i < aliasCount; i++)
+ info(TEXT_("\t") + TEXT_(aliases[i]));
+
+ info(TEXT_("Got ") + TEXT_(taskCount) + TEXT_(" task to process."));
+
+ for (int i = 0; i < taskCount; i++)
+ {
+ info(TEXT_("Sending \"") + TEXT_(basicTasks[i]->getName()) + TEXT_("\" to \"") + TEXT_(aliases[i % aliasCount]) + TEXT_("\""));
+
+
+ /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))
+ info("Hey ! It's me ! ");
+ */
+
+ basicTasks[i]->send(aliases[i % aliasCount]);
+ }
+
+ info("Send completed");
+
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ FinalizeTask* finalizeTask;
+
+ for (int i = 0; i < aliasCount; i++)
+ {
+ finalizeTask = new FinalizeTask();
+ finalizeTask->send(aliases[i]);
+
+ }
+
+ info("Goodbye now!");
+
+ delete[] basicTasks;
+ delete[] aliases;
+
+ delete this;
+
+ return 0;
+}
-#ifndef MASTER_HPP\r
-#define MASTER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Master : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Master);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Master(){}\r
- \r
- // Destructor.\r
- virtual ~Master(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-#endif // !MASTER_HPP
\ No newline at end of file
+#ifndef MASTER_HPP
+#define MASTER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Master : public Process
+{
+ MSG_DECLARE_DYNAMIC(Master);
+
+ public:
+
+ // Default constructor.
+ Master(){}
+
+ // Destructor.
+ virtual ~Master(){}
+
+ int main(int argc, char** argv);
+
+};
+
+#endif // !MASTER_HPP
-#include "Slave.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include "BasicTask.hpp"\r
-\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-using namespace std;\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Slave, Process);\r
-\r
-int Slave::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- Task* receivedTask;\r
- BasicTask* basicTask;\r
- \r
- while(true) \r
- { \r
- receivedTask = Task::receive(Host::currentHost().getName()); \r
- \r
- if(receivedTask->isInstanceOf("FinalizeTask")) \r
- {\r
- delete receivedTask;\r
- break;\r
- }\r
- \r
- basicTask = reinterpret_cast<BasicTask*>(receivedTask);\r
- \r
- info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- \r
- info(TEXT_("Processing \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));\r
- basicTask->execute();\r
- info(TEXT_("\"") + TEXT_(basicTask->getName()) + TEXT_("\" done "));\r
- \r
- delete basicTask;\r
- }\r
- \r
- info("Received Finalize. I'm done. See you!");\r
- \r
- delete this;\r
- return 0;\r
-}
\ No newline at end of file
+#include "Slave.hpp"
+#include "FinalizeTask.hpp"
+#include "BasicTask.hpp"
+
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+using namespace std;
+
+MSG_IMPLEMENT_DYNAMIC(Slave, Process)
+
+int Slave::main(int argc, char** argv)
+{
+ info("Hello");
+
+ Task* receivedTask;
+ BasicTask* basicTask;
+
+ while(true)
+ {
+ receivedTask = Task::receive(Host::currentHost().getName());
+
+ if(receivedTask->isInstanceOf("FinalizeTask"))
+ {
+ delete receivedTask;
+ break;
+ }
+
+ basicTask = reinterpret_cast<BasicTask*>(receivedTask);
+
+ info(TEXT_("Received \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+
+ info(TEXT_("Processing \"") + TEXT_(basicTask->getName()) + TEXT_("\" "));
+ basicTask->execute();
+ info(TEXT_("\"") + TEXT_(basicTask->getName()) + TEXT_("\" done "));
+
+ delete basicTask;
+ }
+
+ info("Received Finalize. I'm done. See you!");
+
+ delete this;
+ return 0;
+}
-#ifndef SLAVE_HPP\r
-#define SLAVE_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Slave : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Slave);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Slave(){}\r
- \r
- // Destructor.\r
- virtual ~Slave(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !SLAVE_HPP
\ No newline at end of file
+#ifndef SLAVE_HPP
+#define SLAVE_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Slave : public Process
+{
+ MSG_DECLARE_DYNAMIC(Slave);
+
+ public:
+
+ // Default constructor.
+ Slave(){}
+
+ // Destructor.
+ virtual ~Slave(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !SLAVE_HPP
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
- \r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+
+}
+
-#include "PingPongTask.hpp"\r
-\r
-MSG_IMPLEMENT_DYNAMIC(PingPongTask, Task);
\ No newline at end of file
+#include "PingPongTask.hpp"
+
+MSG_IMPLEMENT_DYNAMIC(PingPongTask, Task)
-#ifndef PINGPONG_TASK_HPP\r
-#define PINGPONG_TASK_HPP\r
-\r
-#include <Task.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class PingPongTask : public Task\r
-{\r
- MSG_DECLARE_DYNAMIC(PingPongTask);\r
-\r
-public:\r
-\r
- PingPongTask()\r
- :Task(NULL, 0.0, 0.0){}\r
- \r
- // Default constructor.\r
- PingPongTask(const char* name, double computeDuration, double messageSize)\r
- throw (InvalidArgumentException, NullPointerException)\r
- :Task(name, computeDuration, messageSize){}\r
- \r
- // Destructor\r
- virtual ~PingPongTask() {}\r
- \r
- void setTime(double timeVal)\r
- {\r
- this->timeVal = timeVal;\r
- }\r
- \r
- double getTime() \r
- {\r
- return timeVal;\r
- }\r
- \r
-private :\r
- \r
- double timeVal;\r
-};\r
-\r
-\r
-#endif // !PINGPONG_TASK_HPP
\ No newline at end of file
+#ifndef PINGPONG_TASK_HPP
+#define PINGPONG_TASK_HPP
+
+#include <Task.hpp>
+using namespace SimGrid::Msg;
+
+class PingPongTask : public Task
+{
+ MSG_DECLARE_DYNAMIC(PingPongTask);
+
+public:
+
+ PingPongTask()
+ :Task(NULL, 0.0, 0.0){}
+
+ // Default constructor.
+ PingPongTask(const char* name, double computeDuration, double messageSize)
+ throw (InvalidArgumentException, NullPointerException)
+ :Task(name, computeDuration, messageSize){}
+
+ // Destructor
+ virtual ~PingPongTask()
+ throw(MsgException){}
+
+ void setTime(double timeVal)
+ {
+ this->timeVal = timeVal;
+ }
+
+ double getTime()
+ {
+ return timeVal;
+ }
+
+private :
+
+ double timeVal;
+};
+
+
+#endif // !PINGPONG_TASK_HPP
-#include "Receiver.hpp"\r
-#include "PingPongTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-#include <Msg.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Receiver, Process);\r
-\r
-const double commSizeLat = 1;\r
-const double commSizeBw = 100000000;\r
-\r
-int Receiver::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- double communicationTime=0;\r
- double time = getClock();\r
- StringHelper bw;\r
- \r
- info("Try to get a task");\r
- \r
- PingPongTask* task = reinterpret_cast<PingPongTask*>(Task::get(0));\r
- \r
- double timeGot = getClock();\r
- double timeSent = task->getTime();\r
- \r
- delete task;\r
- \r
- info(TEXT_("Got at time ") + TEXT_(timeGot));\r
- info(TEXT_("Was sent at time ") + TEXT_(timeSent));\r
- \r
- time = timeSent;\r
- \r
- communicationTime = timeGot - time;\r
- \r
- info(TEXT_( "Communication time : ") + TEXT_(communicationTime));\r
- \r
- info(TEXT_(" --- BW ") + bw.append(commSizeBw/communicationTime,"%07lf") + TEXT_(" ----"));\r
- \r
- info("Goodbye!");\r
- \r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Receiver.hpp"
+#include "PingPongTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+#include <Msg.hpp>
+
+#include <Msg.hpp>
+
+MSG_IMPLEMENT_DYNAMIC(Receiver, Process)
+
+const double commSizeLat = 1;
+const double commSizeBw = 100000000;
+
+int Receiver::main(int argc, char** argv)
+{
+ info("Hello");
+ double communicationTime=0;
+ double time = getClock();
+ StringHelper bw;
+
+ info("Try to get a task");
+
+ PingPongTask* task = reinterpret_cast<PingPongTask*>(Task::get(0));
+
+ double timeGot = getClock();
+ double timeSent = task->getTime();
+
+ delete task;
+
+ info(TEXT_("Got at time ") + TEXT_(timeGot));
+ info(TEXT_("Was sent at time ") + TEXT_(timeSent));
+
+ time = timeSent;
+
+ communicationTime = timeGot - time;
+
+ info(TEXT_( "Communication time : ") + TEXT_(communicationTime));
+
+ info(TEXT_(" --- BW ") + bw.append(commSizeBw/communicationTime,"%07lf") + TEXT_(" ----"));
+
+ info("Goodbye!");
+
+ delete this;
+
+ return 0;
+}
-#ifndef RECEIVER_HPP\r
-#define RECEIVER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
- \r
-class Receiver : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Receiver);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Receiver(){}\r
- \r
- // Destructor.\r
- virtual ~Receiver(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !RECEIVER_HPP
\ No newline at end of file
+#ifndef RECEIVER_HPP
+#define RECEIVER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Receiver : public Process
+{
+ MSG_DECLARE_DYNAMIC(Receiver);
+
+ public:
+
+ // Default constructor.
+ Receiver(){}
+
+ // Destructor.
+ virtual ~Receiver(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !RECEIVER_HPP
+
-#include "Sender.hpp"\r
-#include "PingPongTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-#include <Msg.hpp>\r
-\r
-#include <Msg.hpp>\r
-using namespace std;\r
-\r
-const double commSizeLat = 1;\r
-const double commSizeBw = 100000000;\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Sender, Process);\r
-\r
-int Sender::main(int argc, char** argv)\r
-{\r
- info("Hello");\r
- \r
- int hostCount = argc;\r
- \r
- info(TEXT_("Host count : ") + TEXT_(hostCount));\r
- \r
- Host* hostTable = new Host[hostCount]; \r
- double time;\r
- double computeDuration = 0;\r
- PingPongTask* task;\r
- \r
- for(int pos = 0; pos < argc ; pos++) \r
- {\r
- try \r
- {\r
- hostTable[pos] = Host::getByName(argv[pos]);\r
- } \r
- catch(HostNotFoundException e) \r
- {\r
- error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));\r
- exit(1);\r
- }\r
- }\r
- \r
- for (int pos = 0; pos < hostCount; pos++) \r
- { \r
- time = getClock(); \r
- \r
- info(TEXT_("Sender time : ") + TEXT_(time));\r
- \r
- task = new PingPongTask("no name",computeDuration,commSizeLat);\r
- task->setTime(time);\r
- \r
- hostTable[pos].put(0,task);\r
- } \r
- \r
- info("Goodbye!");\r
-\r
- \r
- delete[] hostTable;\r
-\r
- delete this;\r
-\r
- return 0;\r
- \r
-}
\ No newline at end of file
+#include "Sender.hpp"
+#include "PingPongTask.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+#include <Msg.hpp>
+
+#include <Msg.hpp>
+using namespace std;
+
+const double commSizeLat = 1;
+const double commSizeBw = 100000000;
+
+MSG_IMPLEMENT_DYNAMIC(Sender, Process)
+
+int Sender::main(int argc, char** argv)
+{
+ info("Hello");
+
+ int hostCount = argc;
+
+ info(TEXT_("Host count : ") + TEXT_(hostCount));
+
+ Host* hostTable = new Host[hostCount];
+ double time;
+ double computeDuration = 0;
+ PingPongTask* task;
+
+ for(int pos = 0; pos < argc ; pos++)
+ {
+ try
+ {
+ hostTable[pos] = Host::getByName(argv[pos]);
+ }
+ catch(HostNotFoundException e)
+ {
+ error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));
+ exit(1);
+ }
+ }
+
+ for (int pos = 0; pos < hostCount; pos++)
+ {
+ time = getClock();
+
+ info(TEXT_("Sender time : ") + TEXT_(time));
+
+ task = new PingPongTask("no name",computeDuration,commSizeLat);
+ task->setTime(time);
+
+ hostTable[pos].put(0,task);
+ }
+
+ info("Goodbye!");
+
+
+ delete[] hostTable;
+
+ delete this;
+
+ return 0;
+
+}
+
-#ifndef SENDER_HPP\r
-#define SENDER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class Sender : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(Sender);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- Sender(){}\r
- \r
- // Destructor.\r
- virtual ~Sender(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !SENDER_HPP
\ No newline at end of file
+#ifndef SENDER_HPP
+#define SENDER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class Sender : public Process
+{
+ MSG_DECLARE_DYNAMIC(Sender);
+
+ public:
+
+ // Default constructor.
+ Sender(){}
+
+ // Destructor.
+ virtual ~Sender(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !SENDER_HPP
+
-#include "DreamMaster.hpp"\r
-#include "LazyGuy.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-#include <Msg.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-\r
-MSG_IMPLEMENT_DYNAMIC(DreamMaster, Process);\r
-\r
-int DreamMaster::main(int argc, char** argv)\r
-{\r
- \r
- info("Hello");\r
- \r
- info("Let's create a lazy guy.");\r
- \r
-\r
- LazyGuy* lazy;\r
-\r
- try\r
- {\r
- Host currentHost = Host::currentHost();\r
- \r
- info(TEXT_("Current host name : ") + TEXT_(currentHost.getName()));\r
- \r
- lazy = new LazyGuy(currentHost,"LazyGuy");\r
- \r
- info("Let's wait a little bit...");\r
- \r
- Process::sleep(10.0);\r
- \r
- info("Let's wake the lazy guy up! >:) ");\r
- \r
- lazy->resume();\r
- \r
- \r
- }\r
- catch(HostNotFoundException e)\r
- {\r
- error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));\r
- exit(1);\r
- }\r
- \r
- //lazy->migrate(currentHost);\r
- \r
- info("OK, goodbye now.");\r
-\r
- delete this;\r
-\r
- return 0;\r
- \r
-}
\ No newline at end of file
+#include "DreamMaster.hpp"
+#include "LazyGuy.hpp"
+#include <Host.hpp>
+#include <HostNotFoundException.hpp>
+#include <Msg.hpp>
+
+#include <Msg.hpp>
+
+
+MSG_IMPLEMENT_DYNAMIC(DreamMaster, Process)
+
+int DreamMaster::main(int argc, char** argv)
+{
+
+ info("Hello");
+
+ info("Let's create a lazy guy.");
+
+
+ LazyGuy* lazy;
+
+ try
+ {
+ Host currentHost = Host::currentHost();
+
+ info(TEXT_("Current host name : ") + TEXT_(currentHost.getName()));
+
+ lazy = new LazyGuy(currentHost,"LazyGuy");
+
+ info("Let's wait a little bit...");
+
+ Process::sleep(10.0);
+
+ info("Let's wake the lazy guy up! >:) ");
+
+ lazy->resume();
+
+
+ }
+ catch(HostNotFoundException e)
+ {
+ error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));
+ exit(1);
+ }
+
+ //lazy->migrate(currentHost);
+
+ info("OK, goodbye now.");
+
+ delete this;
+
+ return 0;
+
+}
-#ifndef DREAMMASTER_HPP\r
-#define DREAMMASTER_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class DreamMaster : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(DreamMaster);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- DreamMaster(){}\r
- \r
- // Destructor.\r
- virtual ~DreamMaster(){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !DREAMMASTER_HPP
\ No newline at end of file
+#ifndef DREAMMASTER_HPP
+#define DREAMMASTER_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class DreamMaster : public Process
+{
+ MSG_DECLARE_DYNAMIC(DreamMaster);
+
+ public:
+
+ // Default constructor.
+ DreamMaster(){}
+
+ // Destructor.
+ virtual ~DreamMaster(){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !DREAMMASTER_HPP
-#include "LazyGuy.hpp"\r
-#include <Host.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-MSG_IMPLEMENT_DYNAMIC(LazyGuy, Process);\r
-\r
-int LazyGuy::main(int argc, char** argv)\r
-{\r
- info("Hello !");\r
- \r
- info("Nobody's watching me ? Let's go to sleep.");\r
- \r
- Process::currentProcess().suspend();\r
- \r
- info("Uuuh ? Did somebody call me ?");\r
- \r
- info("Mmmh, goodbye now."); \r
-\r
-\r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "LazyGuy.hpp"
+#include <Host.hpp>
+
+#include <Msg.hpp>
+
+// Not needed : DreamMaster directly constructs the object
+// MSG_IMPLEMENT_DYNAMIC(LazyGuy, Process)
+
+int LazyGuy::main(int argc, char** argv)
+{
+ info("Hello !");
+
+ info("Nobody's watching me ? Let's go to sleep.");
+
+ Process::currentProcess().suspend();
+
+ info("Uuuh ? Did somebody call me ?");
+
+ info("Mmmh, goodbye now.");
+
+ delete this;
+
+ return 0;
+}
+
-#ifndef LAZYGUY_HPP\r
-#define LAZYGUY_HPP\r
-\r
-#include <Process.hpp>\r
-using namespace SimGrid::Msg;\r
-\r
-class LazyGuy : public Process\r
-{\r
- MSG_DECLARE_DYNAMIC(LazyGuy);\r
-\r
- public:\r
- \r
- // Default constructor.\r
- LazyGuy(){}\r
- \r
- // Destructor.\r
- virtual ~LazyGuy(){}\r
- \r
- LazyGuy(const Host& rHost,const char* name)\r
- throw(NullPointerException)\r
- :Process(rHost, name){}\r
- \r
- int main(int argc, char** argv);\r
- \r
-};\r
-\r
-\r
-#endif // !LAZYGUY_HPP
\ No newline at end of file
+#ifndef LAZYGUY_HPP
+#define LAZYGUY_HPP
+
+#include <Process.hpp>
+using namespace SimGrid::Msg;
+
+class LazyGuy : public Process
+{
+ // Not needed : DreamMaster directly constructs the object
+ // MSG_DECLARE_DYNAMIC(LazyGuy);
+
+ public:
+
+ // Default constructor.
+ LazyGuy(){}
+
+ // Destructor.
+ virtual ~LazyGuy(){}
+
+ LazyGuy(const Host& rHost,const char* name)
+ throw(NullPointerException)
+ :Process(rHost, name){}
+
+ int main(int argc, char** argv);
+
+};
+
+
+#endif // !LAZYGUY_HPP
+
-#include <Simulation.hpp>\r
-\r
-using namespace SimGrid::Msg;\r
-\r
-int\r
-main(int argc, char* argv[])\r
-{\r
- Simulation s;\r
- \r
- return s.execute(argc, argv);\r
- \r
-}\r
+#include <Simulation.hpp>
+
+using namespace SimGrid::Msg;
+
+int
+main(int argc, char* argv[])
+{
+ Simulation s;
+
+ return s.execute(argc, argv);
+
+}
+
+