From: cherierm Date: Thu, 3 Jul 2008 16:59:47 +0000 (+0000) Subject: Examples of CPP versions of Msg X-Git-Tag: v3.3~252 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/2abf25f94d9a3fd19a5d85637d6758932be8b047 Examples of CPP versions of Msg git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5855 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/cxx/autoDestination/BasicTask.cxx b/examples/cxx/autoDestination/BasicTask.cxx new file mode 100644 index 0000000000..21924e8d4f --- /dev/null +++ b/examples/cxx/autoDestination/BasicTask.cxx @@ -0,0 +1,3 @@ +#include "BasicTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(BasicTask, Task); \ No newline at end of file diff --git a/examples/cxx/autoDestination/BasicTask.hpp b/examples/cxx/autoDestination/BasicTask.hpp new file mode 100644 index 0000000000..14f8e1da8e --- /dev/null +++ b/examples/cxx/autoDestination/BasicTask.hpp @@ -0,0 +1,30 @@ +#ifndef BASIC_TASK_HPP +#define BASIC_TASK_HPP + +#include +using namespace SimGrid::Msg; + +class BasicTask : public Task +{ + MSG_DECLARE_DYNAMIC(BasicTask); +public: + + // Default constructor. + BasicTask() {} + + // Destructor + virtual ~BasicTask() {} + 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 \ No newline at end of file diff --git a/examples/cxx/autoDestination/FinalizeTask.cxx b/examples/cxx/autoDestination/FinalizeTask.cxx new file mode 100644 index 0000000000..a9cde570c1 --- /dev/null +++ b/examples/cxx/autoDestination/FinalizeTask.cxx @@ -0,0 +1,3 @@ +#include "FinalizeTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task); \ No newline at end of file diff --git a/examples/cxx/autoDestination/FinalizeTask.hpp b/examples/cxx/autoDestination/FinalizeTask.hpp new file mode 100644 index 0000000000..6d95a14682 --- /dev/null +++ b/examples/cxx/autoDestination/FinalizeTask.hpp @@ -0,0 +1,25 @@ +#ifndef FINALIZE_TASK_HPP +#define FINALIZE_TASK_HPP + +#include +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() {} + +}; + + + + +#endif // !FINALIZE_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/autoDestination/Forwarder.cxx b/examples/cxx/autoDestination/Forwarder.cxx new file mode 100644 index 0000000000..07a1a3af9d --- /dev/null +++ b/examples/cxx/autoDestination/Forwarder.cxx @@ -0,0 +1,60 @@ +#include "Forwarder.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" + +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Forwarder, Process); + + +int Forwarder::main(int argc, char** argv) +{ + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + int aliasCount = argc; + + int taskCount = 0; + + Task* taskReceived; + Task* finalizeTask; + BasicTask* basicTask; + + while(true) + { + taskReceived = Task::receive(); + + if(taskReceived->isInstanceOf("FinalizeTask")) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + for (int i = 0; i < aliasCount; i++) + { + finalizeTask = new FinalizeTask(); + finalizeTask->send(argv[i]); + } + + delete taskReceived; + + break; + } + + basicTask = reinterpret_cast(taskReceived); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << basicTask->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << basicTask->getName() << "\" to \"" << argv[taskCount % aliasCount] << "\"" << endl; + + basicTask->send(argv[taskCount % aliasCount]); + + taskCount++; + } + + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "I'm done. See you!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/autoDestination/Forwarder.hpp b/examples/cxx/autoDestination/Forwarder.hpp new file mode 100644 index 0000000000..31af15ce3a --- /dev/null +++ b/examples/cxx/autoDestination/Forwarder.hpp @@ -0,0 +1,24 @@ +#ifndef FORWARDER_HPP +#define FORWARDER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/autoDestination/Main.cxx b/examples/cxx/autoDestination/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/autoDestination/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/autoDestination/Master.cxx b/examples/cxx/autoDestination/Master.cxx new file mode 100644 index 0000000000..d3b11e8fbb --- /dev/null +++ b/examples/cxx/autoDestination/Master.cxx @@ -0,0 +1,93 @@ +#include "Master.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" + +#include +#include + +#include +using namespace std; + + +#ifndef BUFFMAX +#define BUFFMAX 260 +#endif + +MSG_IMPLEMENT_DYNAMIC(Master, Process); + +int Master::main(int argc, char** argv) +{ + char buff[BUFFMAX + 1] = {0}; + int taskCount; + double taskComputeSize; + double taskCommunicateSize; + + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "argc=" << argc << endl; + + for (int i = 0; i< argc; i++) + cout << "argv:" << argv[i] << endl; + + 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++) + { + sprintf(buff,"Task_%d",i); + basicTasks[i] = new BasicTask(buff, taskComputeSize, taskCommunicateSize); + memset(buff, 0 , BUFFMAX + 1); + } + + int aliasCount = argc - 3; + + + char** aliases = (char**) calloc(aliasCount, sizeof(char*)); + + for(int i = 3; i < argc ; i++) + aliases[i - 3] = _strdup(argv[i]); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got "<< aliasCount << " alias(es) :" << endl; + + for (int i = 0; i < aliasCount; i++) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << aliases[i] << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got "<< taskCount << " task to process." << endl; + + for (int i = 0; i < taskCount; i++) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << basicTasks[i]->getName() << "\" to \"" << aliases[i % aliasCount] << "\"" << endl; + + /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0])) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hey ! It's me ! "; + */ + + basicTasks[i]->send(aliases[i % aliasCount]); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Send completed" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + FinalizeTask* finalizeTask; + + for (int i = 0; i < aliasCount; i++) + { + finalizeTask = new FinalizeTask(); + finalizeTask->send(aliases[i]); + + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Goodbye now!" << endl; + + delete[] basicTasks; + delete[] aliases; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/autoDestination/Master.hpp b/examples/cxx/autoDestination/Master.hpp new file mode 100644 index 0000000000..dc08c6d27c --- /dev/null +++ b/examples/cxx/autoDestination/Master.hpp @@ -0,0 +1,23 @@ +#ifndef MASTER_HPP +#define MASTER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/autoDestination/Slave.cxx b/examples/cxx/autoDestination/Slave.cxx new file mode 100644 index 0000000000..a00ecf4c03 --- /dev/null +++ b/examples/cxx/autoDestination/Slave.cxx @@ -0,0 +1,45 @@ +#include "Slave.hpp" +#include "FinalizeTask.hpp" +#include "BasicTask.hpp" + +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Slave, Process); + +int Slave::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + + Task* receivedTask; + BasicTask* basicTask; + + while(true) + { + receivedTask = Task::receive(); + + if(receivedTask->isInstanceOf("FinalizeTask")) + { + delete receivedTask; + break; + } + + basicTask = reinterpret_cast(receivedTask); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << basicTask->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Processing \"" << basicTask->getName() << "\" " << endl; + basicTask->execute(); + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\"" << basicTask->getName() << "\" done " << endl; + + delete basicTask; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received Finalize. I'm done. See you!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/autoDestination/Slave.hpp b/examples/cxx/autoDestination/Slave.hpp new file mode 100644 index 0000000000..3e73dfe70a --- /dev/null +++ b/examples/cxx/autoDestination/Slave.hpp @@ -0,0 +1,24 @@ +#ifndef SLAVE_HPP +#define SLAVE_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/autoDestination/autoDestination_deployment.xml b/examples/cxx/autoDestination/autoDestination_deployment.xml new file mode 100644 index 0000000000..392e233ae7 --- /dev/null +++ b/examples/cxx/autoDestination/autoDestination_deployment.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/autoDestination/autoDestination_platform.xml b/examples/cxx/autoDestination/autoDestination_platform.xml new file mode 100644 index 0000000000..55b389873c --- /dev/null +++ b/examples/cxx/autoDestination/autoDestination_platform.xml @@ -0,0 +1,8296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/basic/BasicTask.cxx b/examples/cxx/basic/BasicTask.cxx new file mode 100644 index 0000000000..21924e8d4f --- /dev/null +++ b/examples/cxx/basic/BasicTask.cxx @@ -0,0 +1,3 @@ +#include "BasicTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(BasicTask, Task); \ No newline at end of file diff --git a/examples/cxx/basic/BasicTask.hpp b/examples/cxx/basic/BasicTask.hpp new file mode 100644 index 0000000000..14f8e1da8e --- /dev/null +++ b/examples/cxx/basic/BasicTask.hpp @@ -0,0 +1,30 @@ +#ifndef BASIC_TASK_HPP +#define BASIC_TASK_HPP + +#include +using namespace SimGrid::Msg; + +class BasicTask : public Task +{ + MSG_DECLARE_DYNAMIC(BasicTask); +public: + + // Default constructor. + BasicTask() {} + + // Destructor + virtual ~BasicTask() {} + 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 \ No newline at end of file diff --git a/examples/cxx/basic/FinalizeTask.cxx b/examples/cxx/basic/FinalizeTask.cxx new file mode 100644 index 0000000000..a9cde570c1 --- /dev/null +++ b/examples/cxx/basic/FinalizeTask.cxx @@ -0,0 +1,3 @@ +#include "FinalizeTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task); \ No newline at end of file diff --git a/examples/cxx/basic/FinalizeTask.hpp b/examples/cxx/basic/FinalizeTask.hpp new file mode 100644 index 0000000000..6d95a14682 --- /dev/null +++ b/examples/cxx/basic/FinalizeTask.hpp @@ -0,0 +1,25 @@ +#ifndef FINALIZE_TASK_HPP +#define FINALIZE_TASK_HPP + +#include +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() {} + +}; + + + + +#endif // !FINALIZE_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/basic/Forwarder.cxx b/examples/cxx/basic/Forwarder.cxx new file mode 100644 index 0000000000..1fa5c2dc3f --- /dev/null +++ b/examples/cxx/basic/Forwarder.cxx @@ -0,0 +1,70 @@ +#include "Forwarder.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Forwarder, Process); + + +int Forwarder::main(int argc, char** argv) +{ + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + 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) + { + cerr << e.toString() << endl; + cerr << "Buggy deployment file" << endl; + exit(1); + } + } + + int taskCount = 0; + + while(true) + { + Task* t = Task::get(0); + + if(t->isInstanceOf("FinalizeTask")) + { + cout << getName() << ":" << getHost().getName() << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + for (int cpt = 0; cpt< slavesCount; cpt++) + { + slaves[cpt].put(0, new FinalizeTask()); + } + + delete t; + + break; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << t->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << t->getName() << "\" to \"" << slaves[taskCount % slavesCount].getName() <<"\"" << endl; + + slaves[taskCount % slavesCount].put(0, t); + + taskCount++; + } + + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "I'm done. See you!" << endl; + + delete[] slaves; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/basic/Forwarder.hpp b/examples/cxx/basic/Forwarder.hpp new file mode 100644 index 0000000000..31af15ce3a --- /dev/null +++ b/examples/cxx/basic/Forwarder.hpp @@ -0,0 +1,24 @@ +#ifndef FORWARDER_HPP +#define FORWARDER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/basic/Main.cxx b/examples/cxx/basic/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/basic/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/basic/Master.cxx b/examples/cxx/basic/Master.cxx new file mode 100644 index 0000000000..f6e06d207f --- /dev/null +++ b/examples/cxx/basic/Master.cxx @@ -0,0 +1,110 @@ +#include "Master.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" +#include +#include + +#include +using namespace std; + + +#ifndef BUFFMAX +#define BUFFMAX 260 +#endif + +MSG_IMPLEMENT_DYNAMIC(Master, Process); + +int Master::main(int argc, char** argv) +{ + int channel = 0; + char buff[BUFFMAX + 1] = {0}; + int numberOfTasks; + double taskComputeSize; + double taskCommunicateSize; + + if (argc < 3) + { + cerr <<"Master needs 3 arguments" << endl; + exit(1); + } + + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + int slaveCount = 0; + Host* slaves = NULL; + + cout << "argc=" << argc << endl; + + for (int i = 0; i< argc; i++) + cout << "argv:" << argv[i] << endl; + + 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++) + { + sprintf(buff,"Task_%d",i); + todo[i] = new BasicTask(buff, taskComputeSize, taskCommunicateSize); + memset(buff, 0 , BUFFMAX + 1); + } + + 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); + } + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got slave(s) :" << slaveCount << endl; + + for (int i = 0; i < slaveCount; i++) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << slaves[i].getName() << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got " << numberOfTasks << " task to process." << endl; + + for (int i = 0; i < numberOfTasks; i++) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << todo[i]->getName() << "\" to \"" << slaves[i % slaveCount].getName() << "\"" << endl; + + if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName())) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hey ! It's me ! "; + + slaves[i % slaveCount].put(channel, todo[i]); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Send completed" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + for (int i = 0; i < slaveCount; i++) + { + slaves[i].put(channel, new FinalizeTask()); + } + + + for(int i = 0; i < numberOfTasks; i++) + delete todo[i]; + + delete[] todo; + + delete[] slaves; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Goodbye now!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/basic/Master.hpp b/examples/cxx/basic/Master.hpp new file mode 100644 index 0000000000..dc08c6d27c --- /dev/null +++ b/examples/cxx/basic/Master.hpp @@ -0,0 +1,23 @@ +#ifndef MASTER_HPP +#define MASTER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/basic/Slave.cxx b/examples/cxx/basic/Slave.cxx new file mode 100644 index 0000000000..775dd24600 --- /dev/null +++ b/examples/cxx/basic/Slave.cxx @@ -0,0 +1,37 @@ +#include "Slave.hpp" +#include "FinalizeTask.hpp" +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Slave, Process); + +int Slave::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + while(true) + { + Task* t = Task::get(0); + + if(t->isInstanceOf("FinalizeTask")) + { + delete t; + break; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << t->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Processing \"" << t->getName() << "\" " << endl; + + t->execute(); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\"" << t->getName() << "\" done " << endl; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received Finalize. I'm done. See you!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/basic/Slave.hpp b/examples/cxx/basic/Slave.hpp new file mode 100644 index 0000000000..3e73dfe70a --- /dev/null +++ b/examples/cxx/basic/Slave.hpp @@ -0,0 +1,24 @@ +#ifndef SLAVE_HPP +#define SLAVE_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/basic/basic_deployment.xml b/examples/cxx/basic/basic_deployment.xml new file mode 100644 index 0000000000..bab270f6dd --- /dev/null +++ b/examples/cxx/basic/basic_deployment.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/basic/basic_platform.xml b/examples/cxx/basic/basic_platform.xml new file mode 100644 index 0000000000..55b389873c --- /dev/null +++ b/examples/cxx/basic/basic_platform.xml @@ -0,0 +1,8296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/comm_time/CommTimeTask.cxx b/examples/cxx/comm_time/CommTimeTask.cxx new file mode 100644 index 0000000000..9eddef723a --- /dev/null +++ b/examples/cxx/comm_time/CommTimeTask.cxx @@ -0,0 +1,3 @@ +#include "CommTimeTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(CommTimeTask, Task); \ No newline at end of file diff --git a/examples/cxx/comm_time/CommTimeTask.hpp b/examples/cxx/comm_time/CommTimeTask.hpp new file mode 100644 index 0000000000..67ef2a868a --- /dev/null +++ b/examples/cxx/comm_time/CommTimeTask.hpp @@ -0,0 +1,42 @@ +#ifndef COMMTIME_TASK_HPP +#define COMMTIME_TASK_HPP + +#include +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() {} + + void setTime(double timeVal) + { + this->timeVal = timeVal; + } + + double getTime() + { + return timeVal; + } + +private : + + double timeVal; +}; + + + + +#endif // !COMMTIME_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/comm_time/FinalizeTask.cxx b/examples/cxx/comm_time/FinalizeTask.cxx new file mode 100644 index 0000000000..a9cde570c1 --- /dev/null +++ b/examples/cxx/comm_time/FinalizeTask.cxx @@ -0,0 +1,3 @@ +#include "FinalizeTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task); \ No newline at end of file diff --git a/examples/cxx/comm_time/FinalizeTask.hpp b/examples/cxx/comm_time/FinalizeTask.hpp new file mode 100644 index 0000000000..6d95a14682 --- /dev/null +++ b/examples/cxx/comm_time/FinalizeTask.hpp @@ -0,0 +1,25 @@ +#ifndef FINALIZE_TASK_HPP +#define FINALIZE_TASK_HPP + +#include +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() {} + +}; + + + + +#endif // !FINALIZE_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/comm_time/Main.cxx b/examples/cxx/comm_time/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/comm_time/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/comm_time/Master.cxx b/examples/cxx/comm_time/Master.cxx new file mode 100644 index 0000000000..7ab27b6c5c --- /dev/null +++ b/examples/cxx/comm_time/Master.cxx @@ -0,0 +1,89 @@ +#include "Master.hpp" +#include "CommTimeTask.hpp" +#include "FinalizeTask.hpp" +#include +#include +#include + +#include +using namespace std; + + +#ifndef BUFFMAX +#define BUFFMAX 260 +#endif + +MSG_IMPLEMENT_DYNAMIC(Master, Process); + +int Master::main(int argc, char** argv) +{ + int channel = 0; + char buff[BUFFMAX + 1] = {0}; + int numberOfTasks; + double taskComputeSize; + double taskCommunicateSize; + + if (argc < 3) + { + cerr <<"Master needs 3 arguments" << endl; + exit(1); + } + + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + 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) + { + cerr << e.toString() <<". Stopping Now!" << endl; + exit(1); + } + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got slave(s) :" << slaveCount << endl; + + for (int i = 0; i < slaveCount; i++) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << slaves[i].getName() << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got " << numberOfTasks << " task to process." << endl; + + + for (int i = 0; i < numberOfTasks; i++) + { + sprintf(buff,"Task_%d",i); + CommTimeTask* task = new CommTimeTask(buff, taskComputeSize, taskCommunicateSize); + task->setTime(getClock()); + slaves[i % slaveCount].put(0, task); + memset(buff, 0 , BUFFMAX + 1); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + for (int i = 0; i < slaveCount; i++) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Finalize host " << slaves[i].getName() << " [" << i << "]" << endl; + slaves[i].put(0, new FinalizeTask()); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All finalize messages have been dispatched. Goodbye now!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/comm_time/Master.hpp b/examples/cxx/comm_time/Master.hpp new file mode 100644 index 0000000000..dc08c6d27c --- /dev/null +++ b/examples/cxx/comm_time/Master.hpp @@ -0,0 +1,23 @@ +#ifndef MASTER_HPP +#define MASTER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/comm_time/Slave.cxx b/examples/cxx/comm_time/Slave.cxx new file mode 100644 index 0000000000..090fce3b9d --- /dev/null +++ b/examples/cxx/comm_time/Slave.cxx @@ -0,0 +1,45 @@ +#include "Slave.hpp" +#include "FinalizeTask.hpp" +#include "CommTimeTask.hpp" +#include +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Slave, Process); + +int Slave::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + while(true) + { + double time1 = getClock(); + Task* t = Task::get(0); + double time2 = getClock(); + + if(t->isInstanceOf("FinalizeTask")) + { + delete t; + break; + } + + CommTimeTask* task = reinterpret_cast(t); + + if(time1 < task->getTime()) + time1 = task->getTime(); + + // cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Processing \"" << task->getName() << "\" " << getHost().getName() << " (Communication time : " << (time2 - time1) << ")" << endl; + + task->execute(); + + delete task; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received Finalize. I'm done. See you!" << endl; + + return 0; + +} \ No newline at end of file diff --git a/examples/cxx/comm_time/Slave.hpp b/examples/cxx/comm_time/Slave.hpp new file mode 100644 index 0000000000..3e73dfe70a --- /dev/null +++ b/examples/cxx/comm_time/Slave.hpp @@ -0,0 +1,24 @@ +#ifndef SLAVE_HPP +#define SLAVE_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/comm_time/comm_time_deployment.xml b/examples/cxx/comm_time/comm_time_deployment.xml new file mode 100644 index 0000000000..0b657be490 --- /dev/null +++ b/examples/cxx/comm_time/comm_time_deployment.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/comm_time/comm_time_platform.xml b/examples/cxx/comm_time/comm_time_platform.xml new file mode 100644 index 0000000000..55b389873c --- /dev/null +++ b/examples/cxx/comm_time/comm_time_platform.xml @@ -0,0 +1,8296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/explicitDestination/BasicTask.cxx b/examples/cxx/explicitDestination/BasicTask.cxx new file mode 100644 index 0000000000..21924e8d4f --- /dev/null +++ b/examples/cxx/explicitDestination/BasicTask.cxx @@ -0,0 +1,3 @@ +#include "BasicTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(BasicTask, Task); \ No newline at end of file diff --git a/examples/cxx/explicitDestination/BasicTask.hpp b/examples/cxx/explicitDestination/BasicTask.hpp new file mode 100644 index 0000000000..14f8e1da8e --- /dev/null +++ b/examples/cxx/explicitDestination/BasicTask.hpp @@ -0,0 +1,30 @@ +#ifndef BASIC_TASK_HPP +#define BASIC_TASK_HPP + +#include +using namespace SimGrid::Msg; + +class BasicTask : public Task +{ + MSG_DECLARE_DYNAMIC(BasicTask); +public: + + // Default constructor. + BasicTask() {} + + // Destructor + virtual ~BasicTask() {} + 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 \ No newline at end of file diff --git a/examples/cxx/explicitDestination/FinalizeTask.cxx b/examples/cxx/explicitDestination/FinalizeTask.cxx new file mode 100644 index 0000000000..a9cde570c1 --- /dev/null +++ b/examples/cxx/explicitDestination/FinalizeTask.cxx @@ -0,0 +1,3 @@ +#include "FinalizeTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(FinalizeTask, Task); \ No newline at end of file diff --git a/examples/cxx/explicitDestination/FinalizeTask.hpp b/examples/cxx/explicitDestination/FinalizeTask.hpp new file mode 100644 index 0000000000..6d95a14682 --- /dev/null +++ b/examples/cxx/explicitDestination/FinalizeTask.hpp @@ -0,0 +1,25 @@ +#ifndef FINALIZE_TASK_HPP +#define FINALIZE_TASK_HPP + +#include +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() {} + +}; + + + + +#endif // !FINALIZE_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Forwarder.cxx b/examples/cxx/explicitDestination/Forwarder.cxx new file mode 100644 index 0000000000..f209d1832e --- /dev/null +++ b/examples/cxx/explicitDestination/Forwarder.cxx @@ -0,0 +1,60 @@ +#include "Forwarder.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" + +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Forwarder, Process); + + +int Forwarder::main(int argc, char** argv) +{ + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + int aliasCount = argc; + + int taskCount = 0; + + Task* taskReceived; + Task* finalizeTask; + BasicTask* basicTask; + + while(true) + { + taskReceived = Task::receive(Host::currentHost().getName()); + + if(taskReceived->isInstanceOf("FinalizeTask")) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + for (int i = 0; i < aliasCount; i++) + { + finalizeTask = new FinalizeTask(); + finalizeTask->send(argv[i]); + } + + delete taskReceived; + + break; + } + + basicTask = reinterpret_cast(taskReceived); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << basicTask->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << basicTask->getName() << "\" to \"" << argv[taskCount % aliasCount] << "\"" << endl; + + basicTask->send(argv[taskCount % aliasCount]); + + taskCount++; + } + + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "I'm done. See you!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Forwarder.hpp b/examples/cxx/explicitDestination/Forwarder.hpp new file mode 100644 index 0000000000..31af15ce3a --- /dev/null +++ b/examples/cxx/explicitDestination/Forwarder.hpp @@ -0,0 +1,24 @@ +#ifndef FORWARDER_HPP +#define FORWARDER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Main.cxx b/examples/cxx/explicitDestination/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/explicitDestination/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/explicitDestination/Master.cxx b/examples/cxx/explicitDestination/Master.cxx new file mode 100644 index 0000000000..d3b11e8fbb --- /dev/null +++ b/examples/cxx/explicitDestination/Master.cxx @@ -0,0 +1,93 @@ +#include "Master.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" + +#include +#include + +#include +using namespace std; + + +#ifndef BUFFMAX +#define BUFFMAX 260 +#endif + +MSG_IMPLEMENT_DYNAMIC(Master, Process); + +int Master::main(int argc, char** argv) +{ + char buff[BUFFMAX + 1] = {0}; + int taskCount; + double taskComputeSize; + double taskCommunicateSize; + + cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "argc=" << argc << endl; + + for (int i = 0; i< argc; i++) + cout << "argv:" << argv[i] << endl; + + 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++) + { + sprintf(buff,"Task_%d",i); + basicTasks[i] = new BasicTask(buff, taskComputeSize, taskCommunicateSize); + memset(buff, 0 , BUFFMAX + 1); + } + + int aliasCount = argc - 3; + + + char** aliases = (char**) calloc(aliasCount, sizeof(char*)); + + for(int i = 3; i < argc ; i++) + aliases[i - 3] = _strdup(argv[i]); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got "<< aliasCount << " alias(es) :" << endl; + + for (int i = 0; i < aliasCount; i++) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << aliases[i] << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got "<< taskCount << " task to process." << endl; + + for (int i = 0; i < taskCount; i++) + { + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << basicTasks[i]->getName() << "\" to \"" << aliases[i % aliasCount] << "\"" << endl; + + /*if((Host::currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0])) + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hey ! It's me ! "; + */ + + basicTasks[i]->send(aliases[i % aliasCount]); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Send completed" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; + + FinalizeTask* finalizeTask; + + for (int i = 0; i < aliasCount; i++) + { + finalizeTask = new FinalizeTask(); + finalizeTask->send(aliases[i]); + + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Goodbye now!" << endl; + + delete[] basicTasks; + delete[] aliases; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Master.hpp b/examples/cxx/explicitDestination/Master.hpp new file mode 100644 index 0000000000..dc08c6d27c --- /dev/null +++ b/examples/cxx/explicitDestination/Master.hpp @@ -0,0 +1,23 @@ +#ifndef MASTER_HPP +#define MASTER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Slave.cxx b/examples/cxx/explicitDestination/Slave.cxx new file mode 100644 index 0000000000..fdfebb2180 --- /dev/null +++ b/examples/cxx/explicitDestination/Slave.cxx @@ -0,0 +1,44 @@ +#include "Slave.hpp" +#include "FinalizeTask.hpp" +#include "BasicTask.hpp" + +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Slave, Process); + +int Slave::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + Task* receivedTask; + BasicTask* basicTask; + + while(true) + { + receivedTask = Task::receive(Host::currentHost().getName()); + + if(receivedTask->isInstanceOf("FinalizeTask")) + { + delete receivedTask; + break; + } + + basicTask = reinterpret_cast(receivedTask); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received \"" << basicTask->getName() << "\" " << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Processing \"" << basicTask->getName() << "\" " << endl; + basicTask->execute(); + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\"" << basicTask->getName() << "\" done " << endl; + + delete basicTask; + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Received Finalize. I'm done. See you!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/explicitDestination/Slave.hpp b/examples/cxx/explicitDestination/Slave.hpp new file mode 100644 index 0000000000..3e73dfe70a --- /dev/null +++ b/examples/cxx/explicitDestination/Slave.hpp @@ -0,0 +1,24 @@ +#ifndef SLAVE_HPP +#define SLAVE_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/explicitDestination/explicitDestination_deployment.xml b/examples/cxx/explicitDestination/explicitDestination_deployment.xml new file mode 100644 index 0000000000..bab270f6dd --- /dev/null +++ b/examples/cxx/explicitDestination/explicitDestination_deployment.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/explicitDestination/explicitDestination_platform.xml b/examples/cxx/explicitDestination/explicitDestination_platform.xml new file mode 100644 index 0000000000..55b389873c --- /dev/null +++ b/examples/cxx/explicitDestination/explicitDestination_platform.xml @@ -0,0 +1,8296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/ping_pong/Main.cxx b/examples/cxx/ping_pong/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/ping_pong/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/ping_pong/PingPongTask.cxx b/examples/cxx/ping_pong/PingPongTask.cxx new file mode 100644 index 0000000000..fe452e6abf --- /dev/null +++ b/examples/cxx/ping_pong/PingPongTask.cxx @@ -0,0 +1,3 @@ +#include "PingPongTask.hpp" + +MSG_IMPLEMENT_DYNAMIC(PingPongTask, Task); \ No newline at end of file diff --git a/examples/cxx/ping_pong/PingPongTask.hpp b/examples/cxx/ping_pong/PingPongTask.hpp new file mode 100644 index 0000000000..53cc4d84d1 --- /dev/null +++ b/examples/cxx/ping_pong/PingPongTask.hpp @@ -0,0 +1,40 @@ +#ifndef PINGPONG_TASK_HPP +#define PINGPONG_TASK_HPP + +#include +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() {} + + void setTime(double timeVal) + { + this->timeVal = timeVal; + } + + double getTime() + { + return timeVal; + } + +private : + + double timeVal; +}; + + +#endif // !PINGPONG_TASK_HPP \ No newline at end of file diff --git a/examples/cxx/ping_pong/Receiver.cxx b/examples/cxx/ping_pong/Receiver.cxx new file mode 100644 index 0000000000..67e67a6fb3 --- /dev/null +++ b/examples/cxx/ping_pong/Receiver.cxx @@ -0,0 +1,44 @@ +#include "Receiver.hpp" +#include "PingPongTask.hpp" +#include +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(Receiver, Process); + +const double commSizeLat = 1; +const double commSizeBw = 100000000; + +int Receiver::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + double communicationTime=0; + double time = getClock(); + + cout <<"[" << getName() << ":" << getHost().getName() << "try to get a task" << endl; + + PingPongTask* task = reinterpret_cast(Task::get(0)); + + double timeGot = getClock(); + double timeSent = task->getTime(); + + delete task; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got at time " << timeGot << endl; + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Was sent at time " << timeSent << endl; + + time = timeSent; + + communicationTime = timeGot - time; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Communication time : " << communicationTime << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << " --- bw " << commSizeBw/communicationTime << " ----" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "goodbye!" << endl; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/ping_pong/Receiver.hpp b/examples/cxx/ping_pong/Receiver.hpp new file mode 100644 index 0000000000..5fbf04e4d9 --- /dev/null +++ b/examples/cxx/ping_pong/Receiver.hpp @@ -0,0 +1,24 @@ +#ifndef RECEIVER_HPP +#define RECEIVER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/ping_pong/Sender.cxx b/examples/cxx/ping_pong/Sender.cxx new file mode 100644 index 0000000000..417bf73c88 --- /dev/null +++ b/examples/cxx/ping_pong/Sender.cxx @@ -0,0 +1,59 @@ +#include "Sender.hpp" +#include "PingPongTask.hpp" +#include +#include +#include + +#include +using namespace std; + +const double commSizeLat = 1; +const double commSizeBw = 100000000; + +MSG_IMPLEMENT_DYNAMIC(Sender, Process); + +int Sender::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + int hostCount = argc; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "host count : " << hostCount << endl; + + 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) + { + cerr << e.toString() <<". Stopping Now!" << endl; + exit(1); + } + } + + for (int pos = 0; pos < hostCount; pos++) + { + time = getClock(); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "sender time : " << time << endl; + + task = new PingPongTask("no name",computeDuration,commSizeLat); + task->setTime(time); + + hostTable[pos].put(0,task); + } + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "goodbye!" << endl; + + delete[] hostTable; + + return 0; + +} \ No newline at end of file diff --git a/examples/cxx/ping_pong/Sender.hpp b/examples/cxx/ping_pong/Sender.hpp new file mode 100644 index 0000000000..3569645c01 --- /dev/null +++ b/examples/cxx/ping_pong/Sender.hpp @@ -0,0 +1,24 @@ +#ifndef SENDER_HPP +#define SENDER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/ping_pong/ping_pong_deployment.xml b/examples/cxx/ping_pong/ping_pong_deployment.xml new file mode 100644 index 0000000000..9daec2fbe4 --- /dev/null +++ b/examples/cxx/ping_pong/ping_pong_deployment.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/cxx/ping_pong/ping_pong_platform.xml b/examples/cxx/ping_pong/ping_pong_platform.xml new file mode 100644 index 0000000000..058d6ac35e --- /dev/null +++ b/examples/cxx/ping_pong/ping_pong_platform.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/cxx/suspend/DreamMaster.cxx b/examples/cxx/suspend/DreamMaster.cxx new file mode 100644 index 0000000000..dd1bab9317 --- /dev/null +++ b/examples/cxx/suspend/DreamMaster.cxx @@ -0,0 +1,52 @@ +#include "DreamMaster.hpp" +#include "LazyGuy.hpp" +#include +#include +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(DreamMaster, Process); + +int DreamMaster::main(int argc, char** argv) +{ + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Let's create a lazy guy."; + + + LazyGuy* lazy; + + try + { + Host currentHost = Host::currentHost(); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Current host name : " << currentHost.getName() << endl; + + lazy = new LazyGuy(currentHost,"LazyGuy"); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Let's wait a little bit..." << endl; + + Process::sleep(10.0); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Let's wake the lazy guy up! >:) " << endl; + + lazy->resume(); + + + } + catch(HostNotFoundException e) + { + cerr << e.toString() <<". Stopping Now!" << endl; + exit(1); + } + + //lazy->migrate(currentHost); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "OK, goodbye now." << endl; + + return 0; + +} \ No newline at end of file diff --git a/examples/cxx/suspend/DreamMaster.hpp b/examples/cxx/suspend/DreamMaster.hpp new file mode 100644 index 0000000000..8729ea3252 --- /dev/null +++ b/examples/cxx/suspend/DreamMaster.hpp @@ -0,0 +1,24 @@ +#ifndef DREAMMASTER_HPP +#define DREAMMASTER_HPP + +#include +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 \ No newline at end of file diff --git a/examples/cxx/suspend/LazyGuy.cxx b/examples/cxx/suspend/LazyGuy.cxx new file mode 100644 index 0000000000..ba12220e43 --- /dev/null +++ b/examples/cxx/suspend/LazyGuy.cxx @@ -0,0 +1,24 @@ +#include "LazyGuy.hpp" +#include + +#include +using namespace std; + +MSG_IMPLEMENT_DYNAMIC(LazyGuy, Process); + +int LazyGuy::main(int argc, char** argv) +{ + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hello !" << endl; + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Nobody's watching me ? Let's go to sleep." << endl; + + Process::currentProcess().suspend(); + + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Uuuh ? Did somebody call me ?" << endl; + cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Mmmh, goodbye now." << endl; + + + delete this; + + return 0; +} \ No newline at end of file diff --git a/examples/cxx/suspend/LazyGuy.hpp b/examples/cxx/suspend/LazyGuy.hpp new file mode 100644 index 0000000000..13077c6dbe --- /dev/null +++ b/examples/cxx/suspend/LazyGuy.hpp @@ -0,0 +1,28 @@ +#ifndef LAZYGUY_HPP +#define LAZYGUY_HPP + +#include +using namespace SimGrid::Msg; + +class LazyGuy : public Process +{ + 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 \ No newline at end of file diff --git a/examples/cxx/suspend/Main.cxx b/examples/cxx/suspend/Main.cxx new file mode 100644 index 0000000000..dbda264803 --- /dev/null +++ b/examples/cxx/suspend/Main.cxx @@ -0,0 +1,12 @@ +#include + +using namespace SimGrid::Msg; + +int +main(int argc, char* argv[]) +{ + Simulation s; + + return s.execute(argc, argv); + +} diff --git a/examples/cxx/suspend/suspend_deployment.xml b/examples/cxx/suspend/suspend_deployment.xml new file mode 100644 index 0000000000..f220954ef3 --- /dev/null +++ b/examples/cxx/suspend/suspend_deployment.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/examples/cxx/suspend/suspend_platform.xml b/examples/cxx/suspend/suspend_platform.xml new file mode 100644 index 0000000000..55b389873c --- /dev/null +++ b/examples/cxx/suspend/suspend_platform.xml @@ -0,0 +1,8296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +