X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a009335302ac96061f77c83afbe51af640d898b0..7ef49c428ab0209965a09a36ab28b59789aaa4b5:/examples/s4u/dht-chord/s4u_dht-chord.hpp diff --git a/examples/s4u/dht-chord/s4u_dht-chord.hpp b/examples/s4u/dht-chord/s4u_dht-chord.hpp index a63191fadf..04f0c224e2 100644 --- a/examples/s4u/dht-chord/s4u_dht-chord.hpp +++ b/examples/s4u/dht-chord/s4u_dht-chord.hpp @@ -32,7 +32,7 @@ public: explicit HostChord(simgrid::s4u::Host* ptr) : host(ptr) { - std::string descr = std::string("RngSream<") + host->cname() + ">"; + std::string descr = std::string("RngSream<") + host->getCname() + ">"; stream_ = RngStream_CreateStream(descr.c_str()); } @@ -63,7 +63,10 @@ public: int answer_id = -1; // answer (used by some types of messages) simgrid::s4u::MailboxPtr answer_to; // mailbox to send an answer to (if any) - ChordMessage(e_message_type_t type) : type(type) { issuer_host_name = simgrid::s4u::this_actor::host()->name(); } + explicit ChordMessage(e_message_type_t type) + : type(type), issuer_host_name(simgrid::s4u::this_actor::getHost()->getName()) + { + } ~ChordMessage() = default; }; @@ -115,20 +118,19 @@ public: join(known_id_); } - if (!joined) + if (not joined) return; - ChordMessage* message = nullptr; void* data = nullptr; double now = simgrid::s4u::Engine::getClock(); 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) { - data = nullptr; - simgrid::s4u::Comm& comm_receive = simgrid::s4u::this_actor::irecv(mailbox_, &data); - while ((now < (start_time_ + deadline_)) && now < MAX_SIMULATION_TIME && !comm_receive.test()) { + 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(); @@ -150,8 +152,10 @@ public: } if (data != nullptr) { - message = static_cast(data); + ChordMessage* message = static_cast(data); handleMessage(message); + comm_receive = nullptr; + data = nullptr; } now = simgrid::s4u::Engine::getClock(); }