Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
please sonar, get_clock is a static method
[simgrid.git] / teshsuite / s4u / comm-pt2pt / comm-pt2pt.cpp
index e201a0e..6fbc607 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2019. 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. */
@@ -47,38 +47,38 @@ static void sender(std::vector<std::string> args)
   XBT_INFO("Sender spec: %s", args[0].c_str());
   for (unsigned int test = 1; test <= args[0].size(); test++) {
     simgrid::s4u::this_actor::sleep_until(test * 5 - 5);
-    std::string* mboxName         = new std::string("Test #" + std::to_string(test));
-    simgrid::s4u::Mailbox* mbox   = simgrid::s4u::Mailbox::by_name(*mboxName);
+    auto* mboxName = new std::string("Test #" + std::to_string(test));
+    auto* mbox     = simgrid::s4u::Mailbox::by_name(*mboxName);
 
     switch (args[0][test - 1]) {
       case 'r':
         XBT_INFO("Test %u: r (regular send)", test);
-        mbox->put((void*)mboxName, 42.0);
+        mbox->put(mboxName, 42.0);
         break;
       case 'R':
         XBT_INFO("Test %u: R (sleep + regular send)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
-        mbox->put((void*)mboxName, 42.0);
+        mbox->put(mboxName, 42.0);
         break;
 
       case 'i':
         XBT_INFO("Test %u: i (asynchronous isend)", test);
-        mbox->put_async((void*)mboxName, 42.0)->wait();
+        mbox->put_async(mboxName, 42.0)->wait();
         break;
       case 'I':
         XBT_INFO("Test %u: I (sleep + isend)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
-        mbox->put_async((void*)mboxName, 42.0)->wait();
+        mbox->put_async(mboxName, 42.0)->wait();
         break;
 
       case 'd':
         XBT_INFO("Test %u: d (detached send)", test);
-        mbox->put_init((void*)mboxName, 42.0)->detach();
+        mbox->put_init(mboxName, 42.0)->detach();
         break;
       case 'D':
         XBT_INFO("Test %u: D (sleep + detached send)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
-        mbox->put_init((void*)mboxName, 42.0)->detach();
+        mbox->put_init(mboxName, 42.0)->detach();
         break;
       default:
         xbt_die("Unknown sender spec for test %u: '%c'", test, args[0][test - 1]);
@@ -94,58 +94,57 @@ static void receiver(std::vector<std::string> args)
   XBT_INFO("Receiver spec: %s", args[0].c_str());
   for (unsigned int test = 1; test <= args[0].size(); test++) {
     simgrid::s4u::this_actor::sleep_until(test * 5 - 5);
-    std::string mboxName          = "Test #" + std::to_string(test);
-    simgrid::s4u::Mailbox* mbox   = simgrid::s4u::Mailbox::by_name(mboxName);
-    void* received                = nullptr;
+    std::string mboxName        = "Test #" + std::to_string(test);
+    simgrid::s4u::Mailbox* mbox = simgrid::s4u::Mailbox::by_name(mboxName);
+    std::string* received       = nullptr;
 
     switch (args[0][test - 1]) {
       case 'r':
         XBT_INFO("Test %u: r (regular receive)", test);
-        received = mbox->get();
+        received = mbox->get<std::string>();
         break;
       case 'R':
         XBT_INFO("Test %u: R (sleep + regular receive)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
-        received = mbox->get();
+        received = mbox->get<std::string>();
         break;
 
       case 'i':
         XBT_INFO("Test %u: i (asynchronous irecv)", test);
-        mbox->get_async(&received)->wait();
+        mbox->get_async<std::string>(&received)->wait();
         break;
       case 'I':
         XBT_INFO("Test %u: I (sleep + asynchronous irecv)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
-        mbox->get_async(&received)->wait();
+        mbox->get_async<std::string>(&received)->wait();
         break;
       case 'p':
         XBT_INFO("Test %u: p (regular receive on permanent mailbox)", test);
         mbox->set_receiver(simgrid::s4u::Actor::self());
-        received = mbox->get();
+        received = mbox->get<std::string>();
         break;
       case 'P':
         XBT_INFO("Test %u: P (sleep + regular receive on permanent mailbox)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
         mbox->set_receiver(simgrid::s4u::Actor::self());
-        received = mbox->get();
+        received = mbox->get<std::string>();
         break;
       case 'j':
         XBT_INFO("Test %u: j (irecv on permanent mailbox)", test);
         mbox->set_receiver(simgrid::s4u::Actor::self());
-        mbox->get_async(&received)->wait();
+        mbox->get_async<std::string>(&received)->wait();
         break;
       case 'J':
         XBT_INFO("Test %u: J (sleep + irecv on permanent mailbox)", test);
         simgrid::s4u::this_actor::sleep_for(0.5);
         mbox->set_receiver(simgrid::s4u::Actor::self());
-        mbox->get_async(&received)->wait();
+        mbox->get_async<std::string>(&received)->wait();
         break;
       default:
         xbt_die("Unknown receiver spec for test %u: '%c'", test, args[0][test - 1]);
     }
-    const std::string* receivedStr = static_cast<std::string*>(received);
-    xbt_assert(*receivedStr == mboxName);
-    delete receivedStr;
+    xbt_assert(*received == mboxName);
+    delete received;
     XBT_INFO("Test %u OK", test);
   }
   simgrid::s4u::this_actor::sleep_for(0.5);
@@ -173,11 +172,11 @@ int main(int argc, char* argv[])
 
   if (argc >= 3) {
     argSend.clear();
-    argSend.push_back(argv[2]);
+    argSend.emplace_back(argv[2]);
   }
   if (argc >= 4) {
     argRecv.clear();
-    argRecv.push_back(argv[3]);
+    argRecv.emplace_back(argv[3]);
   }
   xbt_assert(argSend.front().size() == argRecv.front().size(), "Sender and receiver spec must be of the same size");
 
@@ -187,7 +186,7 @@ int main(int argc, char* argv[])
   simgrid::s4u::Actor::create("recver", hosts[1], receiver, argRecv);
 
   e.run();
-  XBT_INFO("Simulation time %g", e.get_clock());
+  XBT_INFO("Simulation time %g", simgrid::s4u::Engine::get_clock());
 
   return 0;
 }