X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1a64ca4c11a1eb7ba2ecd102f877ac571486a034..e0f1a9dae032024c4f4043e29fa878fc2a6f7699:/examples/cpp/dht-chord/s4u-dht-chord.hpp diff --git a/examples/cpp/dht-chord/s4u-dht-chord.hpp b/examples/cpp/dht-chord/s4u-dht-chord.hpp index 29ce8f9c7f..ab93cbff06 100644 --- a/examples/cpp/dht-chord/s4u-dht-chord.hpp +++ b/examples/cpp/dht-chord/s4u-dht-chord.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2016-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2016-2023. 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. */ @@ -8,7 +8,8 @@ #include "simgrid/s4u.hpp" #include #include -#include + +namespace sg4 = simgrid::s4u; constexpr double MAX_SIMULATION_TIME = 1000; constexpr double PERIODIC_STABILIZE_DELAY = 20; @@ -17,10 +18,6 @@ constexpr double PERIODIC_CHECK_PREDECESSOR_DELAY = 120; constexpr double PERIODIC_LOOKUP_DELAY = 10; constexpr double SLEEP_DELAY = 4.9999; -extern int nb_bits; -extern int nb_keys; -extern int timeout; - /* Types of tasks exchanged between nodes. */ enum class MessageType { FIND_SUCCESSOR, @@ -37,11 +34,11 @@ enum class MessageType { class ChordMessage { public: MessageType type; // type of message - std::string issuer_host_name = simgrid::s4u::this_actor::get_host()->get_name(); // used for logging + std::string issuer_host_name = sg4::this_actor::get_host()->get_name(); // used for logging int request_id = -1; // id (used by some types of messages) int request_finger = 1; // finger parameter (used by some types of messages) int answer_id = -1; // answer (used by some types of messages) - simgrid::s4u::Mailbox* answer_to = nullptr; // mailbox to send an answer to (if any) + sg4::Mailbox* answer_to = nullptr; // mailbox to send an answer to (if any) explicit ChordMessage(MessageType type) : type(type) {} @@ -49,18 +46,26 @@ public: }; class Node { + inline static int nb_bits_; + inline static int nb_keys_; + inline static int timeout_; + int known_id_ = -1; double start_time_ = -1; double deadline_ = -1; - bool joined = false; + bool joined_ = false; int id_; // my id int pred_id_ = -1; // predecessor id - simgrid::xbt::random::XbtRandom random; // random number generator for this node - simgrid::s4u::Mailbox* mailbox_; // my mailbox + simgrid::xbt::random::XbtRandom random_; // random number generator for this node + sg4::Mailbox* mailbox_; // my mailbox std::vector fingers_; // finger table,(fingers[0] is my successor) - int next_finger_to_fix; // index of the next finger to fix in fix_fingers() + int next_finger_to_fix_; // index of the next finger to fix in fix_fingers() + + static bool is_in_interval(int id, int start, int end); public: + static void set_parameters(int nb_bits, int nb_keys, int timeout); + explicit Node(std::vector args); Node(const Node&) = delete; Node& operator=(const Node&) = delete;