Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Enable setting a specific data copy callback to any comm
[simgrid.git] / src / s4u / s4u_Comm.cpp
index 00c6bcf..36b5702 100644 (file)
@@ -297,6 +297,16 @@ Actor* Comm::get_sender() const
   return sender ? sender->get_ciface() : nullptr;
 }
 
+CommPtr Comm::set_copy_data_callback(void (*callback)(kernel::activity::CommImpl*, void*, size_t))
+{
+  static void (*saved_callback)(kernel::activity::CommImpl*, void*, size_t);
+  saved_callback      = callback;
+  copy_data_function_ = [](simgrid::kernel::activity::CommImpl* comm, void* buff, size_t size) {
+    saved_callback(comm, buff, size);
+  };
+  return this;
+}
+
 } // namespace s4u
 } // namespace simgrid
 /* **************************** Public C interface *************************** */