+void* recv(MailboxPtr chan) {
+ void *res = nullptr;
+ CommPtr c = Comm::recv_init(chan);
+ c->setDstData(&res, sizeof(res));
+ c->wait();
+ return res;
+}
+
+void send(MailboxPtr chan, void* payload, double simulatedSize)
+{
+ CommPtr c = Comm::send_init(chan);
+ c->setRemains(simulatedSize);
+ c->setSrcData(payload);
+ // c->start() is optional.
+ c->wait();
+}
+
+void send(MailboxPtr chan, void* payload, double simulatedSize, double timeout)
+{
+ CommPtr c = Comm::send_init(chan);
+ c->setRemains(simulatedSize);
+ c->setSrcData(payload);
+ // c->start() is optional.
+ c->wait(timeout);
+}
+
+CommPtr isend(MailboxPtr chan, void* payload, double simulatedSize)
+{
+ return Comm::send_async(chan, payload, simulatedSize);
+}