- fprintf(file, " node [shape=box, style=filled]\n");
- fprintf(file, " node [width=.3, height=.3, style=filled, color=skyblue]\n\n");
+ if (TRACE_actor_is_enabled()) {
+ 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([](s4u::Exec const&) {
+ Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("execute");
+ });
+ 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_completion.connect([](s4u::Comm const&) {
+ Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->pop_event();
+ });
+ s4u::Actor::on_host_change.connect(on_actor_host_change);
+ }