Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make SIMIX_comm_copy_data_callback a member of CommImpl.
[simgrid.git] / src / kernel / activity / CommImpl.cpp
index f8de83a..e26fecf 100644 (file)
@@ -335,8 +335,10 @@ void simcall_HANDLER_comm_waitany(smx_simcall_t simcall, simgrid::kernel::activi
 /******************************************************************************/
 /*                    SIMIX_comm_copy_data callbacks                       */
 /******************************************************************************/
-static void (*SIMIX_comm_copy_data_callback)(simgrid::kernel::activity::CommImpl*, void*,
-                                             size_t) = &SIMIX_comm_copy_pointer_callback;
+void SIMIX_comm_set_copy_data_callback(void (*callback)(simgrid::kernel::activity::CommImpl*, void*, size_t))
+{
+  simgrid::kernel::activity::CommImpl::set_copy_data_callback(callback);
+}
 
 void SIMIX_comm_copy_buffer_callback(simgrid::kernel::activity::CommImpl* comm, void* buff, size_t buff_size)
 {
@@ -349,11 +351,6 @@ void SIMIX_comm_copy_buffer_callback(simgrid::kernel::activity::CommImpl* comm,
   }
 }
 
-void SIMIX_comm_set_copy_data_callback(void (*callback)(simgrid::kernel::activity::CommImpl*, void*, size_t))
-{
-  SIMIX_comm_copy_data_callback = callback;
-}
-
 void SIMIX_comm_copy_pointer_callback(simgrid::kernel::activity::CommImpl* comm, void* buff, size_t buff_size)
 {
   xbt_assert((buff_size == sizeof(void*)), "Cannot copy %zu bytes: must be sizeof(void*)", buff_size);
@@ -364,6 +361,13 @@ namespace simgrid {
 namespace kernel {
 namespace activity {
 
+void (*CommImpl::copy_data_callback_)(CommImpl*, void*, size_t) = &SIMIX_comm_copy_pointer_callback;
+
+void CommImpl::set_copy_data_callback(void (*callback)(CommImpl*, void*, size_t))
+{
+  copy_data_callback_ = callback;
+}
+
 CommImpl& CommImpl::set_size(double size)
 {
   size_ = size;
@@ -434,7 +438,7 @@ CommImpl* CommImpl::start()
     /* FIXME[donassolo]: getting the network_model from the origin host
      * Soon we need to change this function to first get the routes and later
      * create the respective surf actions */
-    auto* net_model = from_->get_netpoint()->get_englobing_zone()->get_network_model();
+    auto net_model = from_->get_netpoint()->get_englobing_zone()->get_network_model();
 
     surf_action_ = net_model->communicate(from_, to_, size_, rate_);
     surf_action_->set_activity(this);
@@ -495,7 +499,7 @@ void CommImpl::copy_data()
     if (copy_data_fun)
       copy_data_fun(this, src_buff_, buff_size);
     else
-      SIMIX_comm_copy_data_callback(this, src_buff_, buff_size);
+      copy_data_callback_(this, src_buff_, buff_size);
   }
 
   /* Set the copied flag so we copy data only once */