:cpp:member:`Actor::on_host_change <simgrid::s4u::Actor::on_host_change>`
:cpp:member:`Actor::on_termination <simgrid::s4u::Actor::on_termination>`
:cpp:member:`Actor::on_destruction <simgrid::s4u::Actor::on_destruction>`
-- :cpp:member:`Comm::on_start <simgrid::s4u::Comm::on_start>`
+- :cpp:member:`Comm::on_send <simgrid::s4u::Comm::on_send>`
+ :cpp:member:`Comm::on_recv <simgrid::s4u::Comm::on_recv>`
:cpp:member:`Comm::on_completion <simgrid::s4u::Comm::on_completion>`
+- :cpp:member:`CommImpl::on_start <simgrid::kernel::actiivty::CommImpl::on_start>`
+ :cpp:member:`CommImpl::on_completion <simgrid::kernel::activity::CommImpl::on_completion>`
- :cpp:member:`Engine::on_platform_creation <simgrid::s4u::Engine::on_platform_creation>`
:cpp:member:`Engine::on_platform_created <simgrid::s4u::Engine::on_platform_created>`
:cpp:member:`Engine::on_time_advance <simgrid::s4u::Engine::on_time_advance>`
:cpp:member:`Engine::on_simulation_end <simgrid::s4u::Engine::on_simulation_end>`
:cpp:member:`Engine::on_deadlock <simgrid::s4u::Engine::on_deadlock>`
-- :cpp:member:`Comm::on_start <simgrid::s4u::Comm::on_start>`
- :cpp:member:`Comm::on_completion <simgrid::s4u::Comm::on_completion>`
- :cpp:member:`Exec::on_start <simgrid::s4u::Exec::on_start>`
:cpp:member:`Exec::on_completion <simgrid::s4u::Exec::on_completion>`
- :cpp:member:`Exec::on_start <simgrid::s4u::Exec::on_start>`
.. group-tab:: C++
.. doxygenvariable:: simgrid::s4u::Comm::on_completion
- .. doxygenvariable:: simgrid::s4u::Comm::on_start
+ .. doxygenvariable:: simgrid::s4u::Comm::on_recv
+ .. doxygenvariable:: simgrid::s4u::Comm::on_send
.. _API_s4u_Exec:
*/
static void sendto(Host* from, Host* to, uint64_t simulated_size_in_bytes);
- static xbt::signal<void(Comm const&, bool is_sender)> on_start;
+ static xbt::signal<void(Comm const&)> on_send;
+ static xbt::signal<void(Comm const&)> on_recv;
+ static xbt::signal<void(Comm const&)> on_start;
static xbt::signal<void(Comm const&)> on_completion;
/*! take a vector s4u::CommPtr and return when one of them is finished.
s4u::Exec::on_completion.connect([](s4u::Exec const&) {
Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->pop_event();
});
- s4u::Comm::on_start.connect([](s4u::Comm const&, bool is_sender) {
- Container::by_name(instr_pid(*s4u::Actor::self()))
- ->get_state("ACTOR_STATE")
- ->push_event(is_sender ? "send" : "receive");
+ s4u::Comm::on_send.connect([](s4u::Comm const&) {
+ Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("send");
+ });
+ s4u::Comm::on_recv.connect([](s4u::Comm const&) {
+ Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("receive");
});
s4u::Comm::on_completion.connect([](s4u::Comm const&) {
Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->pop_event();
void* src_data_ = nullptr; /* User data associated to the communication */
void* dst_data_ = nullptr;
-
static xbt::signal<void(CommImpl const&)> on_start;
static xbt::signal<void(CommImpl const&)> on_completion;
};
namespace simgrid {
namespace s4u {
-xbt::signal<void(Comm const&, bool is_sender)> Comm::on_start;
+xbt::signal<void(Comm const&)> Comm::on_send;
+xbt::signal<void(Comm const&)> Comm::on_recv;
xbt::signal<void(Comm const&)> Comm::on_completion;
void Comm::complete(Activity::State state)
});
} else if (src_buff_ != nullptr) { // Sender side
- on_start(*this, true /* is_sender*/);
+ on_send(*this);
pimpl_ = simcall_comm_isend(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_,
clean_fun_, copy_data_function_, get_user_data(), detached_);
} else if (dst_buff_ != nullptr) { // Receiver side
xbt_assert(not detached_, "Receive cannot be detached");
- on_start(*this, false /*is_sender*/);
+ on_recv(*this);
pimpl_ = simcall_comm_irecv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_,
copy_data_function_, get_user_data(), rate_);
if (from_ != nullptr || to_ != nullptr) {
return vetoable_start()->wait_for(timeout); // In the case of host2host comm, do it in two simcalls
} else if (src_buff_ != nullptr) {
- on_start(*this, true /*is_sender*/);
+ on_send(*this);
simcall_comm_send(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_,
copy_data_function_, get_user_data(), timeout);
} else { // Receiver
- on_start(*this, false /*is_sender*/);
+ on_recv(*this);
simcall_comm_recv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_, copy_data_function_,
get_user_data(), timeout, rate_);
}