X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fbebc94399e47c8b0e1f81e318052cb0b56ee670..2daf04fb944713dcd1bbf1070d11b9d7bb77c8d4:/examples/s4u/platform-failures/s4u-platform-failures.cpp diff --git a/examples/s4u/platform-failures/s4u-platform-failures.cpp b/examples/s4u/platform-failures/s4u-platform-failures.cpp index d5df745e12..df3b9fa42e 100644 --- a/examples/s4u/platform-failures/s4u-platform-failures.cpp +++ b/examples/s4u/platform-failures/s4u-platform-failures.cpp @@ -11,6 +11,8 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example") static int master(int argc, char* argv[]) { + xbt_assert(argc == 5, "Expecting one parameter"); + simgrid::s4u::MailboxPtr mailbox; long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s"); double comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); @@ -23,8 +25,9 @@ static int master(int argc, char* argv[]) mailbox = simgrid::s4u::Mailbox::by_name(std::string("worker-") + std::to_string(i % workers_count)); double* payload = new double(comp_size); try { + XBT_INFO("Send a message to %s", mailbox->get_cname()); mailbox->put(payload, comm_size, 10.0); - XBT_INFO("Send completed"); + XBT_INFO("Send to %s completed", mailbox->get_cname()); } catch (xbt_ex& e) { switch (e.category) { case host_error: @@ -75,46 +78,50 @@ static int master(int argc, char* argv[]) static int worker(int argc, char* argv[]) { + xbt_assert(argc == 2, "Expecting one parameter"); long id = xbt_str_parse_int(argv[1], "Invalid argument %s"); simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::by_name(std::string("worker-") + std::to_string(id)); double* payload = nullptr; double comp_size = -1; while (1) { try { + XBT_INFO("Waiting a message on %s", mailbox->get_cname()); payload = static_cast(mailbox->get()); comp_size = *payload; - delete payload; - } catch (xbt_ex& e) { - switch (e.category) { - case host_error: + xbt_assert(payload != nullptr, "mailbox->get() failed"); + if (comp_size < 0) { /* - Exit when -1.0 is received */ + XBT_INFO("I'm done. See you!"); + delete payload; + break; + } + /* - Otherwise, process the task */ + try { + XBT_INFO("Start execution..."); + simgrid::s4u::this_actor::execute(comp_size); + XBT_INFO("Execution complete."); + delete payload; + } catch (xbt_ex& e) { + if (e.category == host_error) { XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!"); + delete payload; return -1; - case network_error: - XBT_INFO("Mmh. Something went wrong. Nevermind. Let's keep going!"); - break; - default: + } else xbt_die("Unexpected behavior"); } - } - xbt_assert(payload != nullptr, "mailbox->get() failed"); - if (comp_size < 0) { /* - Exit when -1.0 is received */ - XBT_INFO("I'm done. See you!"); - break; - } - /* - Otherwise, process the task */ - try { - simgrid::s4u::this_actor::execute(comp_size); } catch (xbt_ex& e) { switch (e.category) { case host_error: XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!"); + delete payload; return -1; + case network_error: + XBT_INFO("Mmh. Something went wrong. Nevermind. Let's keep going!"); + break; default: xbt_die("Unexpected behavior"); } } } - XBT_INFO("I'm done. See you!"); return 0; }