X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/af72ee01a6a0c01b1a67dc3095f952fd8ab1dd42..e6593ec05d07769fa45119371b197007662cad63:/examples/cpp/replay-comm/s4u-replay-comm.cpp diff --git a/examples/cpp/replay-comm/s4u-replay-comm.cpp b/examples/cpp/replay-comm/s4u-replay-comm.cpp index 47432561c3..e53af5bb3b 100644 --- a/examples/cpp/replay-comm/s4u-replay-comm.cpp +++ b/examples/cpp/replay-comm/s4u-replay-comm.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -10,7 +10,8 @@ #include #include -XBT_LOG_NEW_DEFAULT_CATEGORY(replay_comm, "Messages specific for this msg example"); +XBT_LOG_NEW_DEFAULT_CATEGORY(replay_comm, "Messages specific for this example"); +namespace sg4 = simgrid::s4u; #define ACT_DEBUG(...) \ if (XBT_LOG_ISENABLED(replay_comm, xbt_log_priority_verbose)) { \ @@ -32,8 +33,12 @@ public: explicit Replayer(std::vector args) { const char* actor_name = args.at(0).c_str(); - const char* trace_filename = args.size() > 1 ? args[1].c_str() : nullptr; - simgrid::xbt::replay_runner(actor_name, trace_filename); + if (args.size() > 1) { // split mode, the trace file was provided in the deployment file + const char* trace_filename = args[1].c_str(); + simgrid::xbt::replay_runner(actor_name, trace_filename); + } else { // Merged mode + simgrid::xbt::replay_runner(actor_name); + } } void operator()() const @@ -45,40 +50,38 @@ public: static void compute(simgrid::xbt::ReplayAction& action) { double amount = std::stod(action[2]); - double clock = simgrid::s4u::Engine::get_clock(); + double clock = sg4::Engine::get_clock(); ACT_DEBUG("Entering %s", NAME.c_str()); - simgrid::s4u::this_actor::execute(amount); - log_action(action, simgrid::s4u::Engine::get_clock() - clock); + sg4::this_actor::execute(amount); + log_action(action, sg4::Engine::get_clock() - clock); } static void send(simgrid::xbt::ReplayAction& action) { auto size = static_cast(std::stod(action[3])); auto* payload = new std::string(action[3]); - double clock = simgrid::s4u::Engine::get_clock(); - simgrid::s4u::Mailbox* to = simgrid::s4u::Mailbox::by_name(simgrid::s4u::this_actor::get_name() + "_" + action[2]); + double clock = sg4::Engine::get_clock(); + sg4::Mailbox* to = sg4::Mailbox::by_name(sg4::this_actor::get_name() + "_" + action[2]); ACT_DEBUG("Entering Send: %s (size: %" PRIu64 ") -- Actor %s on mailbox %s", NAME.c_str(), size, - simgrid::s4u::this_actor::get_cname(), to->get_cname()); + sg4::this_actor::get_cname(), to->get_cname()); to->put(payload, size); - log_action(action, simgrid::s4u::Engine::get_clock() - clock); + log_action(action, sg4::Engine::get_clock() - clock); } static void recv(simgrid::xbt::ReplayAction& action) { - double clock = simgrid::s4u::Engine::get_clock(); - simgrid::s4u::Mailbox* from = - simgrid::s4u::Mailbox::by_name(std::string(action[2]) + "_" + simgrid::s4u::this_actor::get_name()); + double clock = sg4::Engine::get_clock(); + sg4::Mailbox* from = sg4::Mailbox::by_name(std::string(action[2]) + "_" + sg4::this_actor::get_name()); - ACT_DEBUG("Receiving: %s -- Actor %s on mailbox %s", NAME.c_str(), simgrid::s4u::this_actor::get_cname(), - from->get_cname()); + ACT_DEBUG("Receiving: %s -- Actor %s on mailbox %s", NAME.c_str(), sg4::this_actor::get_cname(), from->get_cname()); from->get_unique(); - log_action(action, simgrid::s4u::Engine::get_clock() - clock); + log_action(action, sg4::Engine::get_clock() - clock); } }; int main(int argc, char* argv[]) { - simgrid::s4u::Engine e(&argc, argv); + sg4::Engine e(&argc, argv); xbt_assert(argc > 2, "Usage: %s platform_file deployment_file [action_files]\n" @@ -92,23 +95,17 @@ int main(int argc, char* argv[]) e.register_actor("p0"); e.register_actor("p1"); e.load_deployment(argv[2]); + if (argv[3] != nullptr) + xbt_replay_set_tracefile(argv[3]); /* Action registration */ xbt_replay_action_register("compute", Replayer::compute); xbt_replay_action_register("send", Replayer::send); xbt_replay_action_register("recv", Replayer::recv); - std::ifstream ifs; - if (argv[3]) { - ifs.open(argv[3], std::ifstream::in); - simgrid::xbt::action_fs = &ifs; - } - e.run(); - simgrid::xbt::action_fs = nullptr; - - XBT_INFO("Simulation time %g", e.get_clock()); + XBT_INFO("Simulation time %g", sg4::Engine::get_clock()); return 0; }