Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further snake_case s4u::Actor
[simgrid.git] / examples / s4u / dht-chord / s4u-dht-chord.hpp
index a5fff65..4e82016 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();
@@ -161,9 +163,12 @@ public:
       }
       now = simgrid::s4u::Engine::getClock();
     }
-    if (comm_receive != nullptr)
-      comm_receive->cancel();
-    delete static_cast<ChordMessage*>(data);
+    if (comm_receive != nullptr) {
+      if (comm_receive->test())
+        delete static_cast<ChordMessage*>(data);
+      else
+        comm_receive->cancel();
+    }
     // leave the ring
     leave();
   }