Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
test and fix Comm::set_payload_size + more chaining
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 4 Feb 2021 11:29:02 +0000 (12:29 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 4 Feb 2021 11:29:02 +0000 (12:29 +0100)
include/simgrid/s4u/Comm.hpp
include/simgrid/s4u/Mailbox.hpp
src/s4u/s4u_Comm.cpp
src/s4u/s4u_Mailbox.cpp

index e0f42ae..c952dcf 100644 (file)
@@ -104,7 +104,7 @@ public:
    * That's the size of the simulated data, that's completely related from the actual data size (given with @ref
    * Comm::set_src_data_size()).
    */
-  Comm* set_payload_size(double bytes);
+  CommPtr set_payload_size(double bytes);
 
   /** Specify the data to send and its size. Don't mix the size with @ref Comm::set_payload_size()
    *
index 87fa566..f42bd58 100644 (file)
@@ -112,8 +112,7 @@ public:
 
 template <typename T> CommPtr Mailbox::get_async(T** data)
 {
-  CommPtr res = get_init();
-  res->set_dst_data(reinterpret_cast<void**>(data), sizeof(void*));
+  CommPtr res = get_init()->set_dst_data(reinterpret_cast<void**>(data), sizeof(void*));
   res->vetoable_start();
   return res;
 }
index a0ee15f..3c216b4 100644 (file)
@@ -118,9 +118,9 @@ CommPtr Comm::set_dst_data(void** buff, size_t size)
   dst_buff_size_ = size;
   return this;
 }
-Comm* Comm::set_payload_size(double bytes)
+CommPtr Comm::set_payload_size(double bytes)
 {
-  set_remaining(bytes);
+  Activity::set_remaining(bytes);
   return this;
 }
 
@@ -132,10 +132,11 @@ CommPtr Comm::sendto_init(Host* from, Host* to)
 
   return res;
 }
+
 CommPtr Comm::sendto_async(Host* from, Host* to, double simulated_size_in_bytes)
 {
-  auto res = Comm::sendto_init(from, to);
-  res->set_remaining(simulated_size_in_bytes)->start();
+  auto res = Comm::sendto_init(from, to)->set_payload_size(simulated_size_in_bytes);
+  res->vetoable_start();
   return res;
 }
 
index 5244567..f5fedf7 100644 (file)
@@ -91,13 +91,9 @@ CommPtr Mailbox::put_init()
   return res;
 }
 
-CommPtr Mailbox::put_init(void* data, uint64_t simulated_size_in_bytes)
+CommPtr Mailbox::put_init(void* payload, uint64_t simulated_size_in_bytes)
 {
-  CommPtr res = put_init();
-  res->set_remaining(simulated_size_in_bytes);
-  res->src_buff_      = data;
-  res->src_buff_size_ = sizeof(void*);
-  return res;
+  return put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload)->set_src_data_size(sizeof(void*));
 }
 
 CommPtr Mailbox::put_async(void* payload, uint64_t simulated_size_in_bytes)
@@ -112,9 +108,7 @@ void Mailbox::put(void* payload, uint64_t simulated_size_in_bytes)
 {
   xbt_assert(payload != nullptr, "You cannot send nullptr");
 
-  CommPtr c = put_init();
-  c->set_remaining(simulated_size_in_bytes);
-  c->set_src_data(payload);
+  CommPtr c = put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload);
   c->vetoable_start();
   c->wait();
 }
@@ -123,9 +117,7 @@ void Mailbox::put(void* payload, uint64_t simulated_size_in_bytes, double timeou
 {
   xbt_assert(payload != nullptr, "You cannot send nullptr");
 
-  CommPtr c = put_init();
-  c->set_remaining(simulated_size_in_bytes);
-  c->set_src_data(payload);
+  CommPtr c = put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload);
   c->vetoable_start();
   c->wait_for(timeout);
 }