X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/616ba5a6c0390b7fd7b8dbd5849e4eb236c16c3c..4b3f034babb47fcaf8e1e58dbbc6d76968f6f478:/include/simgrid/s4u/actor.hpp diff --git a/include/simgrid/s4u/actor.hpp b/include/simgrid/s4u/actor.hpp index d3dd8ebc35..e96a862a4b 100644 --- a/include/simgrid/s4u/actor.hpp +++ b/include/simgrid/s4u/actor.hpp @@ -6,6 +6,7 @@ #ifndef SIMGRID_S4U_ACTOR_HPP #define SIMGRID_S4U_ACTOR_HPP +#include #include #include #include @@ -29,7 +30,7 @@ namespace s4u { * #include "s4u/actor.hpp" * * class Worker { - * int operator()() { + * void operator()() { * printf("Hello s4u"); * return 0; * } @@ -40,7 +41,7 @@ namespace s4u { * */ XBT_PUBLIC_CLASS Actor { - Actor(smx_process_t smx_proc); + explicit Actor(smx_process_t smx_proc); public: Actor(const char* name, s4u::Host *host, double killTime, std::function code); Actor(const char* name, s4u::Host *host, std::function code) @@ -74,35 +75,41 @@ public: */ void kill(); + static void kill(int pid); + // Static methods on all actors: /** Ask kindly to all actors to die. Only the issuer will survive. */ static void killAll(); +protected: + smx_process_t getInferior() {return pimpl_;} +private: + smx_process_t pimpl_ = nullptr; +}; + +namespace this_actor { + // Static methods working on the current actor: /** Block the actor sleeping for that amount of seconds (may throws hostFailure) */ - static void sleep(double duration); + XBT_PUBLIC(void) sleep(double duration); /** Block the actor, computing the given amount of flops */ - static e_smx_state_t execute(double flop); + XBT_PUBLIC(e_smx_state_t) execute(double flop); /** Block the actor until it gets a message from the given mailbox. * * See \ref Comm for the full communication API (including non blocking communications). */ - static void *recv(Mailbox &chan); + XBT_PUBLIC(void*) recv(Mailbox &chan); /** Block the actor until it delivers a message of the given simulated size to the given mailbox * * See \ref Comm for the full communication API (including non blocking communications). */ - static void send(Mailbox &chan, void*payload, size_t simulatedSize); + XBT_PUBLIC(void) send(Mailbox &chan, void*payload, size_t simulatedSize); -protected: - smx_process_t getInferior() {return pimpl_;} -private: - smx_process_t pimpl_ = nullptr; }; }} // namespace simgrid::s4u