+++ /dev/null
-#include "Forwarder.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <iostream>\r
-using namespace std;\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Forwarder, Process);\r
-\r
-\r
-int Forwarder::main(int argc, char** argv)\r
-{\r
- cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl;\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
- cerr << e.toString() << endl;\r
- cerr << "Buggy deployment file" << endl;\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
- cout << getName() << ":" << getHost().getName() << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl;\r
- \r
- for (int cpt = 0; cpt< slavesCount; cpt++) \r
- {\r
- slaves[cpt].put(0, new FinalizeTask());\r
- }\r
-\r
- delete t;\r
-\r
- break;\r
- }\r
-\r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << t->getName() << "\" " << endl;\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << t->getName() << "\" to \"" << slaves[taskCount % slavesCount].getName() <<"\"" << endl;\r
- \r
- slaves[taskCount % slavesCount].put(0, t);\r
- \r
- taskCount++;\r
- }\r
- \r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "I'm done. See you!" << endl;\r
- \r
- delete[] slaves;\r
-\r
- delete this;\r
- \r
- return 0;\r
-}
\ No newline at end of file