Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / teshsuite / s4u / host-on-off-actors / host-on-off-actors.cpp
index 246ceec..4359ad7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2010-2021. 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,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example")
 
 int tasks_done = 0;
 
-static void actor_daemon()
+XBT_ATTRIB_NORETURN static void actor_daemon()
 {
   const simgrid::s4u::Host* host = simgrid::s4u::Host::current();
   XBT_INFO("  Start daemon on %s (%f)", host->get_cname(), host->get_speed());
@@ -19,13 +19,13 @@ static void actor_daemon()
     simgrid::s4u::this_actor::execute(host->get_speed());
     tasks_done++;
   }
-  XBT_INFO("  daemon done. See you!");
+  xbt_die("  daemon done. See you!");
 }
 
 static void commTX()
 {
   XBT_INFO("  Start TX");
-  std::string* payload = new std::string("COMM");
+  auto* payload = new std::string("COMM");
   simgrid::s4u::Mailbox::by_name("comm")->put_init(payload, 100000000)->detach();
   // We should wait a bit (if not the process will end before the communication, hence an exception on the other side).
   try {
@@ -40,10 +40,9 @@ static void commTX()
 
 static void commRX()
 {
-  const std::string* payload = nullptr;
   XBT_INFO("  Start RX");
   try {
-    payload = static_cast<std::string*>(simgrid::s4u::Mailbox::by_name("comm")->get());
+    auto payload = simgrid::s4u::Mailbox::by_name("comm")->get_unique<std::string>();
     XBT_INFO("  Receive message: %s", payload->c_str());
   } catch (const simgrid::HostFailureException&) {
     XBT_INFO("  Receive message: HOST_FAILURE");
@@ -51,7 +50,6 @@ static void commRX()
     XBT_INFO("  Receive message: TRANSFER_FAILURE");
   }
 
-  delete payload;
   XBT_INFO("  RX Done");
 }