X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9abfa55c584ef8f2e6049ec2b03ffff56a3d6f43..7f4f03348bd07609e258eb3b545bdafc2c881847:/include/simgrid/s4u/actor.hpp?ds=sidebyside diff --git a/include/simgrid/s4u/actor.hpp b/include/simgrid/s4u/actor.hpp index ec7e421fc5..d59ad63348 100644 --- a/include/simgrid/s4u/actor.hpp +++ b/include/simgrid/s4u/actor.hpp @@ -6,11 +6,13 @@ #ifndef SIMGRID_S4U_ACTOR_HPP #define SIMGRID_S4U_ACTOR_HPP -#include "simgrid/simix.h" +#include +#include namespace simgrid { namespace s4u { +class Comm; class Host; class Mailbox; @@ -38,14 +40,16 @@ class Mailbox; * \endverbatim * */ -class Actor { +XBT_PUBLIC_CLASS Actor { + friend Comm; + Actor(smx_process_t smx_proc); public: Actor(const char*name, s4u::Host *host, int argc, char **argv); Actor(const char*name, s4u::Host *host, int argc, char **argv, double killTime); virtual ~Actor() {} /** The main method of your agent */ - virtual int main(int argc, char **argv)=0; + virtual int main(int argc, char **argv); /** The Actor that is currently running */ static Actor *current(); @@ -79,16 +83,19 @@ public: void sleep(double duration); /** Block the actor, computing the given amount of flops */ - void execute(double flop); + e_smx_state_t execute(double flop); - /** Block the actor until it gets a message from the given mailbox */ - //void* recv(const char *mailbox); - - /** Block the actor until it gets a string message (to be freed after use) from the given mailbox */ - char *recvstr(Mailbox &chan); + /** Block the actor until it gets a message from the given mailbox. + * + * See \ref Comm for the full communication API (including non blocking communications). + */ + void *recv(Mailbox &chan); - /** Block the actor until it delivers a string message (that will be copied) to the given mailbox */ - void sendstr(Mailbox &chan, const char*msg); + /** 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). + */ + void send(Mailbox &chan, void*payload, size_t simulatedSize); protected: smx_process_t getInferior() {return p_smx_process;}