X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/91820e8bb8bbcb17156ee33d8dcfdbfd9197cf80..414839787a24ee470f3124f95659a5f6569a2cd5:/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp diff --git a/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp b/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp index 5f599912a6..9fb89acfc7 100644 --- a/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp +++ b/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2023. 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,23 +10,33 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example") static void dummy() { XBT_INFO("I start"); - try { - simgrid::s4u::this_actor::sleep_for(200); - XBT_INFO("I stop"); - } catch (simgrid::HostFailureException& e) { - XBT_DEBUG("The host has died ... as expected. This actor silently stops"); + simgrid::s4u::this_actor::sleep_for(200); + XBT_INFO("I stop"); +} + +static void dummy_daemon() +{ + while (simgrid::s4u::this_actor::get_host()->is_on()) { + XBT_INFO("Hello from the infinite loop"); + simgrid::s4u::this_actor::sleep_for(80.0); } } static void autostart() { simgrid::s4u::Host* host = simgrid::s4u::Host::by_name("Fafard"); - XBT_INFO("starting a dummy process on %s ", host->get_cname()); + XBT_INFO("starting a dummy process on %s", host->get_cname()); simgrid::s4u::ActorPtr dummy_actor = simgrid::s4u::Actor::create("Dummy", host, dummy); - dummy_actor->on_exit([](bool failed) { XBT_INFO("On_exit callback set before autorestart"); }); + dummy_actor->on_exit([](bool failed) { XBT_INFO("Dummy actor %s.", failed ? "failed" : "terminating"); }); dummy_actor->set_auto_restart(true); - dummy_actor->on_exit([](bool failed) { XBT_INFO("On_exit callback set after autorestart"); }); + dummy_actor->on_exit([](bool) { XBT_INFO("On_exit callback set after autorestart"); }); + + XBT_INFO("starting a daemon process on %s", host->get_cname()); + simgrid::s4u::ActorPtr daemon_actor = simgrid::s4u::Actor::create("Daemon", host, dummy_daemon); + daemon_actor->on_exit([](bool failed) { XBT_INFO("Daemon actor %s.", failed ? "failed" : "terminating"); }); + daemon_actor->daemonize()->set_auto_restart(true); + daemon_actor->on_exit([](bool) { XBT_INFO("On_exit callback set after autorestart"); }); simgrid::s4u::this_actor::sleep_for(50); @@ -45,10 +55,10 @@ int main(int argc, char* argv[]) simgrid::s4u::Engine e(&argc, argv); e.load_platform(argv[1]); - simgrid::s4u::Actor::create("Autostart", simgrid::s4u::Host::by_name("Tremblay"), autostart); + simgrid::s4u::Actor::create("Autostart", e.host_by_name("Tremblay"), autostart); e.run(); - XBT_INFO("Simulation time %g", e.get_clock()); + XBT_INFO("Simulation time %g", simgrid::s4u::Engine::get_clock()); return 0; }