}
void* get_user_data() const { return user_data_; }
+
+ AnyActivity* vetoable_start()
+ {
+ Activity::vetoable_start();
+ return static_cast<AnyActivity*>(this);
+ }
#ifndef DOXYGEN
/* The refcounting is done in the ancestor class, Activity, but we want each of the classes benefiting of the CRTP
* (Exec, Comm, etc) to have smart pointers too, so we define these methods here, that forward the ptr_release and
res->vetoable_start();
return res;
}
+
void Mailbox::put(void* payload, uint64_t simulated_size_in_bytes)
{
xbt_assert(payload != nullptr, "You cannot send nullptr");
- CommPtr c = put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload);
- c->vetoable_start();
- c->wait();
+ put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload)->vetoable_start()->wait();
}
+
/** Blocking send with timeout */
void Mailbox::put(void* payload, uint64_t simulated_size_in_bytes, double timeout)
{
xbt_assert(payload != nullptr, "You cannot send nullptr");
- CommPtr c = put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload);
- c->vetoable_start();
- c->wait_for(timeout);
+ put_init()->set_payload_size(simulated_size_in_bytes)->set_src_data(payload)->vetoable_start()->wait_for(timeout);
}
CommPtr Mailbox::get_init()