From ae7fb8c4744e6ada32f137582bac20dc358d6bcd Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Mon, 17 Aug 2015 18:25:40 +0200 Subject: [PATCH 1/1] implement s4u::Comm::recv_async() --- include/simgrid/s4u/comm.hpp | 2 +- src/s4u/s4u_actor.cpp | 1 + src/s4u/s4u_comm.cpp | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/simgrid/s4u/comm.hpp b/include/simgrid/s4u/comm.hpp index bf0f7cb675..94b74cb326 100644 --- a/include/simgrid/s4u/comm.hpp +++ b/include/simgrid/s4u/comm.hpp @@ -32,7 +32,7 @@ public: /** Creates (but don't start) an async recv onto the mailbox #from */ static Comm &recv_init(s4u::Actor *receiver, Mailbox &from); /** Creates and start an async recv to the mailbox #from */ - //static Comm &recv_async(Mailbox &from, void *data); + static Comm &recv_async(s4u::Actor *receiver, Mailbox &from, void **data); void start() override; void wait() override; diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index 8a5dd1ca67..7d3be59c3d 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -102,6 +102,7 @@ void s4u::Actor::send(Mailbox &chan, void *payload, size_t simulatedSize) { Comm c = Comm::send_init(this,chan); c.setRemains(simulatedSize); c.setSrcData(payload); + // c.start() is optional. c.wait(); } diff --git a/src/s4u/s4u_comm.cpp b/src/s4u/s4u_comm.cpp index e24b4ec342..02f5e98d67 100644 --- a/src/s4u/s4u_comm.cpp +++ b/src/s4u/s4u_comm.cpp @@ -141,3 +141,12 @@ s4u::Comm &s4u::Comm::send_async(s4u::Actor *sender, Mailbox &dest, void *data, return res; } +s4u::Comm &s4u::Comm::recv_async(s4u::Actor *receiver, Mailbox &dest, void **data) { + s4u::Comm &res = s4u::Comm::recv_init(receiver, dest); + + res.setDstData(data); + + res.start(); + return res; +} + -- 2.20.1