can_put_->wait(lock);
if (tmode_ == TransferMode::MAILBOX) {
comm = mbox_->put_init(data, simulated_size_in_bytes)
- ->set_copy_data_callback(s4u::Comm::copy_pointer_callback)
->start();
} else
queue_.push(data);
if (tmode_ == TransferMode::MAILBOX)
comm = mbox_->get_init()
->set_dst_data(reinterpret_cast<void**>(data), sizeof(void*))
- ->set_copy_data_callback(s4u::Comm::copy_pointer_callback)
->start();
else {
*data = queue_.front();
xbt::signal<void(CommImpl const&)> CommImpl::on_start;
xbt::signal<void(CommImpl const&)> CommImpl::on_completion;
-std::function<void(CommImpl*, void*, size_t)> CommImpl::copy_data_callback_ = &s4u::Comm::copy_pointer_callback;
+std::function<void(CommImpl*, void*, size_t)> CommImpl::copy_data_callback_ = [](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);
+ *(void**)(comm->dst_buff_) = buff;
+};
void CommImpl::set_copy_data_callback(const std::function<void(CommImpl*, void*, size_t)>& callback)
{