Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Have the s4u::Actor::execute() actually wait for the completion of the execution
[simgrid.git] / include / simgrid / s4u / actor.hpp
index ec7e421..6b9c524 100644 (file)
@@ -11,6 +11,7 @@
 namespace simgrid {
 namespace s4u {
 
+class Comm;
 class Host;
 class Mailbox;
 
@@ -39,6 +40,7 @@ class Mailbox;
  *
  */
 class Actor {
+       friend Comm;
 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);
@@ -79,16 +81,16 @@ 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);
+       void *recv(Mailbox &chan);
 
-       /** 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 delivers a message of the given simulated size to the given mailbox */
+       void send(Mailbox &chan, void*payload, size_t simulatedSize);
 
-       /** Block the actor until it delivers a string message (that will be copied) to the given mailbox */
-       void sendstr(Mailbox &chan, const char*msg);
+       /** Creates (but don't start) an async send action */
+       Comm &send_init(Mailbox &chan);
 
 protected:
        smx_process_t getInferior() {return p_smx_process;}