- simgrid::s4u::Actor::on_creation.connect(instr_actor_on_creation);
- simgrid::s4u::Actor::on_suspend.connect([](simgrid::s4u::ActorPtr actor) {
- simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("suspend");
+ s4u::Actor::on_creation.connect(on_actor_creation);
+ s4u::Actor::on_destruction.connect([](s4u::Actor const& actor) {
+ auto container = Container::by_name_or_null(instr_pid(actor));
+ if (container != nullptr)
+ container->remove_from_parent();
+ });
+ s4u::Actor::on_suspend.connect([](s4u::Actor const& actor) {
+ Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("suspend");
+ });
+ s4u::Actor::on_resume.connect(
+ [](s4u::Actor const& actor) { Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); });
+ s4u::Actor::on_sleep.connect([](s4u::Actor const& actor) {
+ Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("sleep");
+ });
+ s4u::Actor::on_wake_up.connect(
+ [](s4u::Actor const& actor) { Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); });
+ s4u::Exec::on_start.connect([](simgrid::s4u::Actor const& actor, s4u::Exec const&) {
+ Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("execute");