Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Examples of CPP versions of Msg
[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() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl;\r
16         \r
17                 \r
18         Task* receivedTask;\r
19         BasicTask* basicTask;\r
20         \r
21         while(true) \r
22         { \r
23                 receivedTask = Task::receive(); \r
24         \r
25                 if(receivedTask->isInstanceOf("FinalizeTask")) \r
26                 {\r
27                         delete receivedTask;\r
28                         break;\r
29                 }\r
30         \r
31                 basicTask = reinterpret_cast<BasicTask*>(receivedTask);\r
32         \r
33                 cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << basicTask->getName() << "\" " << endl;\r
34         \r
35                 cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Processing \"" << basicTask->getName() <<  "\" " << endl;      \r
36                 basicTask->execute();\r
37                 cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\"" << basicTask->getName() << "\" done " << endl;\r
38         \r
39                 delete basicTask;\r
40         }\r
41                 \r
42         cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received Finalize. I'm done. See you!" << endl;\r
43 \r
44         return 0;\r
45 }