Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[examples/s4u-dht-chord] Move implementation for Node::operator() in .cpp file.
[simgrid.git] / examples / s4u / dht-chord / s4u-dht-chord.hpp
index 8165e28..2df51b0 100644 (file)
@@ -84,67 +84,7 @@ public:
   void stabilize();
   void handleMessage(ChordMessage* message);
 
-  void operator()()
-  {
-    simgrid::s4u::this_actor::sleep_for(start_time_);
-    if (known_id_ == -1) {
-      setPredecessor(-1); // -1 means that I have no predecessor
-      printFingerTable();
-      joined = true;
-    } else {
-      join(known_id_);
-    }
-
-    if (not joined)
-      return;
-    void* data                         = nullptr;
-    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;
-    double next_lookup_date            = start_time_ + PERIODIC_LOOKUP_DELAY;
-    simgrid::s4u::CommPtr comm_receive = nullptr;
-    while ((now < (start_time_ + deadline_)) && now < MAX_SIMULATION_TIME) {
-      if (comm_receive == nullptr)
-        comm_receive = mailbox_->get_async(&data);
-      while ((now < (start_time_ + deadline_)) && now < MAX_SIMULATION_TIME && not comm_receive->test()) {
-        // no task was received: make some periodic calls
-        if (now >= next_stabilize_date) {
-          stabilize();
-          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::get_clock() + PERIODIC_FIX_FINGERS_DELAY;
-        } else if (now >= next_check_predecessor_date) {
-          checkPredecessor();
-          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::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::get_clock();
-      }
-
-      if (data != nullptr) {
-        ChordMessage* message = static_cast<ChordMessage*>(data);
-        handleMessage(message);
-        comm_receive = nullptr;
-        data         = nullptr;
-      }
-      now = simgrid::s4u::Engine::get_clock();
-    }
-    if (comm_receive != nullptr) {
-      if (comm_receive->test())
-        delete static_cast<ChordMessage*>(data);
-      else
-        comm_receive->cancel();
-    }
-    // leave the ring
-    leave();
-  }
+  void operator()();
 };
 
 #endif