Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill trailing whitespaces in source code files.
[simgrid.git] / teshsuite / s4u / ns3-simultaneous-send-rcv / ns3-simultaneous-send-rcv.cpp
index b7a4de5..f84d8a7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2019-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. */
@@ -16,11 +16,9 @@ const int nb_message_to_send = 5;
 const double sleep_time      = 5;
 const int nb_sender          = 100;
 
-int nb_messages_sent = 0;
-
-simgrid::s4u::Mailbox* box;
-
 static void test_send(){
+  simgrid::s4u::Mailbox* box  = simgrid::s4u::Mailbox::by_name("test");
+  static int nb_messages_sent = 0;
   for (int nb_message = 0; nb_message < nb_message_to_send; nb_message++) {
     nb_messages_sent++;
     XBT_VERB("start sending test #%i", nb_messages_sent);
@@ -31,9 +29,11 @@ static void test_send(){
 }
 
 static void test_receive(){
+  simgrid::s4u::Mailbox* box = simgrid::s4u::Mailbox::by_name("test");
   for (int nb_message = 0; nb_message < nb_message_to_send * nb_sender; nb_message++) {
     XBT_VERB("waiting for messages");
-    int id = *(int*)(box->get());
+    auto ptr = box->get_unique<int>();
+    int id   = *ptr;
     XBT_VERB("received messages #%i", id);
   }
   XBT_INFO("Done receiving from %d senders, each of them sending %d messages", nb_sender, nb_message_to_send);
@@ -43,16 +43,14 @@ static void test_receive(){
 int main(int argc, char *argv[])
 {
   simgrid::s4u::Engine e(&argc, argv);
+
   e.load_platform(argv[1]);
 
-  simgrid::s4u::ActorPtr receiver = simgrid::s4u::Actor::create("receiver", e.get_all_hosts()[0], test_receive);
-  for (int i = 0; i < nb_sender; i++)
-    simgrid::s4u::Actor::create("sender_" + std::to_string(i), e.get_all_hosts()[i % (e.get_host_count() - 1) + 1],
-                                test_send);
+  auto hosts = e.get_all_hosts();
 
-  box = simgrid::s4u::Mailbox::by_name("test");
-  box->set_receiver(receiver);
+  simgrid::s4u::Actor::create("receiver", hosts[0], test_receive);
+  for (int i = 0; i < nb_sender; i++)
+    simgrid::s4u::Actor::create("sender_" + std::to_string(i), hosts[i % (e.get_host_count() - 1) + 1], test_send);
 
   e.run();