Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further snake_case s4u::Engine
[simgrid.git] / examples / s4u / dht-chord / s4u-dht-chord.hpp
index a5fff65..240a555 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2017. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2016-2018. 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. */
@@ -32,7 +32,7 @@ public:
 
   explicit HostChord(simgrid::s4u::Host* ptr) : host(ptr)
   {
-    std::string descr = std::string("RngSream<") + host->getCname() + ">";
+    std::string descr = std::string("RngSream<") + host->get_cname() + ">";
     stream_           = RngStream_CreateStream(descr.c_str());
   }
 
@@ -42,7 +42,7 @@ public:
 };
 
 /* Types of tasks exchanged between nodes. */
-typedef enum {
+enum e_message_type_t {
   FIND_SUCCESSOR,
   FIND_SUCCESSOR_ANSWER,
   GET_PREDECESSOR,
@@ -52,7 +52,7 @@ typedef enum {
   PREDECESSOR_LEAVING,
   PREDECESSOR_ALIVE,
   PREDECESSOR_ALIVE_ANSWER
-} e_message_type_t;
+};
 
 class ChordMessage {
 public:
@@ -64,7 +64,7 @@ public:
   simgrid::s4u::MailboxPtr answer_to; // mailbox to send an answer to (if any)
 
   explicit ChordMessage(e_message_type_t type)
-      : type(type), issuer_host_name(simgrid::s4u::this_actor::getHost()->getName())
+      : type(type), issuer_host_name(simgrid::s4u::this_actor::get_host()->get_name())
   {
   }
 
@@ -87,6 +87,8 @@ class Node {
 
 public:
   explicit Node(std::vector<std::string> args);
+  Node(const Node&) = delete;
+  Node& operator=(const Node&) = delete;
   ~Node();
   void join(int known_id);
   void leave();
@@ -123,7 +125,7 @@ public:
     if (not joined)
       return;
     void* data                         = nullptr;
-    double now                         = simgrid::s4u::Engine::getClock();
+    double now                         = simgrid::s4u::Engine::get_clock();
     double next_stabilize_date         = start_time_ + PERIODIC_STABILIZE_DELAY;
     double next_fix_fingers_date       = start_time_ + PERIODIC_FIX_FINGERS_DELAY;
     double next_check_predecessor_date = start_time_ + PERIODIC_CHECK_PREDECESSOR_DELAY;
@@ -136,21 +138,21 @@ public:
         // no task was received: make some periodic calls
         if (now >= next_stabilize_date) {
           stabilize();
-          next_stabilize_date = simgrid::s4u::Engine::getClock() + PERIODIC_STABILIZE_DELAY;
+          next_stabilize_date = simgrid::s4u::Engine::get_clock() + PERIODIC_STABILIZE_DELAY;
         } else if (now >= next_fix_fingers_date) {
           fixFingers();
-          next_fix_fingers_date = simgrid::s4u::Engine::getClock() + PERIODIC_FIX_FINGERS_DELAY;
+          next_fix_fingers_date = simgrid::s4u::Engine::get_clock() + PERIODIC_FIX_FINGERS_DELAY;
         } else if (now >= next_check_predecessor_date) {
           checkPredecessor();
-          next_check_predecessor_date = simgrid::s4u::Engine::getClock() + PERIODIC_CHECK_PREDECESSOR_DELAY;
+          next_check_predecessor_date = simgrid::s4u::Engine::get_clock() + PERIODIC_CHECK_PREDECESSOR_DELAY;
         } else if (now >= next_lookup_date) {
           randomLookup();
-          next_lookup_date = simgrid::s4u::Engine::getClock() + PERIODIC_LOOKUP_DELAY;
+          next_lookup_date = simgrid::s4u::Engine::get_clock() + PERIODIC_LOOKUP_DELAY;
         } else {
           // nothing to do: sleep for a while
           simgrid::s4u::this_actor::sleep_for(SLEEP_DELAY);
         }
-        now = simgrid::s4u::Engine::getClock();
+        now = simgrid::s4u::Engine::get_clock();
       }
 
       if (data != nullptr) {
@@ -159,11 +161,14 @@ public:
         comm_receive = nullptr;
         data         = nullptr;
       }
-      now = simgrid::s4u::Engine::getClock();
+      now = simgrid::s4u::Engine::get_clock();
+    }
+    if (comm_receive != nullptr) {
+      if (comm_receive->test())
+        delete static_cast<ChordMessage*>(data);
+      else
+        comm_receive->cancel();
     }
-    if (comm_receive != nullptr)
-      comm_receive->cancel();
-    delete static_cast<ChordMessage*>(data);
     // leave the ring
     leave();
   }