]> AND Public Git Repository - simgrid.git/blobdiff - src/s4u/s4u_Comm.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
please clang take 2
[simgrid.git] / src / s4u / s4u_Comm.cpp
index 26fffb780d3c51852a9e4af8fc66dff4bfe392e7..23eaf0d2dcdf7f163b66a6d57c69edcf715efb76 100644 (file)
@@ -38,8 +38,10 @@ int Comm::wait_any_for(const std::vector<CommPtr>* comms, double timeout)
   std::transform(begin(*comms), end(*comms), begin(rcomms),
                  [](const CommPtr& comm) { return static_cast<kernel::activity::CommImpl*>(comm->pimpl_.get()); });
   int changed_pos = simcall_comm_waitany(rcomms.data(), rcomms.size(), timeout);
-  if (changed_pos != -1)
+  if (changed_pos != -1) {
+    on_completion(*(comms->at(changed_pos)));
     comms->at(changed_pos)->release_dependencies();
+  }
   return changed_pos;
 }
 
@@ -136,6 +138,11 @@ CommPtr Comm::sendto_async(Host* from, Host* to, double simulated_size_in_bytes)
   return res;
 }
 
+void Comm::sendto(Host* from, Host* to, double simulated_size_in_bytes)
+{
+  sendto_async(from, to, simulated_size_in_bytes)->wait();
+}
+
 Comm* Comm::start()
 {
   xbt_assert(get_state() == State::INITED || get_state() == State::STARTING,
@@ -145,7 +152,7 @@ Comm* Comm::start()
     xbt_assert(src_buff_ == nullptr && dst_buff_ == nullptr,
                "Direct host-to-host communications cannot carry any data.");
     pimpl_ = kernel::actor::simcall([this] {
-      auto res = new kernel::activity::CommImpl(this->from_, this->to_, this->get_remaining());
+      kernel::activity::CommImplPtr res(new kernel::activity::CommImpl(this->from_, this->to_, this->get_remaining()));
       res->start();
       return res;
     });