Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
8df47121c135fc77294b1c08d66c79b543e083ef
[simgrid.git] / examples / cxx / autoDestination / Slave.cxx
1 #include "Slave.hpp"\r
2 #include "FinalizeTask.hpp"\r
3 #include "BasicTask.hpp"\r
4 \r
5 #include <Host.hpp>\r
6 #include <HostNotFoundException.hpp>\r
7 \r
8 #include <iostream>\r
9 using namespace std;\r
10 \r
11 MSG_IMPLEMENT_DYNAMIC(Slave, Process);\r
12 \r
13 int Slave::main(int argc, char** argv)\r
14 {\r
15         cout <<"[" << getName() << ":" << getHost().getName() << ": PID " << getPID() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl;\r
16         \r
17         Task* receivedTask;\r
18         BasicTask* basicTask;\r
19         \r
20         while(true) \r
21         { \r
22                 receivedTask = Task::receive(); \r
23         \r
24                 if(receivedTask->isInstanceOf("FinalizeTask")) \r
25                 {\r
26                         delete receivedTask;\r
27                         break;\r
28                 }\r
29         \r
30                 basicTask = reinterpret_cast<BasicTask*>(receivedTask);\r
31         \r
32                 cout <<"[" << getName() << ":" << getHost().getName() << ": PID " << getPID() << "] " << "Received \"" << basicTask->getName() << "\" " << endl;\r
33         \r
34                 cout <<"[" << getName() << ":" << getHost().getName() << ": PID " << getPID() << "] " << "Processing \"" << basicTask->getName() <<  "\" " << endl;      \r
35                 \r
36                 basicTask->execute();\r
37                 \r
38                 cout <<"[" << getName() << ":" << getHost().getName() << ": PID " << getPID() << "] " << "\"" << basicTask->getName() << "\" done " << endl;\r
39         \r
40                 delete basicTask;\r
41         }\r
42                 \r
43         cout <<"[" << getName() << ":" << getHost().getName() << ": PID " << getPID() << "] " << "Received Finalize. I'm done. See you!" << endl;\r
44         \r
45         delete this;\r
46 \r
47         return 0;\r
48 }