X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/691d7c891da0352a6fa38507a482b287c7e086de..62dceedf62ca9df19fd3afee1458e21d9f211c5a:/examples/s4u/dht-kademlia/s4u-dht-kademlia.cpp diff --git a/examples/s4u/dht-kademlia/s4u-dht-kademlia.cpp b/examples/s4u/dht-kademlia/s4u-dht-kademlia.cpp index c6c8fc1bf4..ac5231cf8a 100644 --- a/examples/s4u/dht-kademlia/s4u-dht-kademlia.cpp +++ b/examples/s4u/dht-kademlia/s4u-dht-kademlia.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2019. The SimGrid Team. +/* Copyright (c) 2012-2020. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -17,53 +17,53 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(kademlia, "Messages specific for this example"); * @param the ID of the person I know in the system (or not) * @param Time before I leave the system because I'm bored */ -static int node(int argc, char* argv[]) +static void node(int argc, char* argv[]) { bool join_success = true; double deadline; xbt_assert(argc == 3 || argc == 4, "Wrong number of arguments"); /* Node initialization */ unsigned int node_id = strtoul(argv[1], nullptr, 0); - kademlia::Node* node = new kademlia::Node(node_id); + kademlia::Node node(node_id); if (argc == 4) { - XBT_INFO("Hi, I'm going to join the network with id %u", node->getId()); + XBT_INFO("Hi, I'm going to join the network with id %u", node.getId()); unsigned int known_id = strtoul(argv[2], NULL, 0); - join_success = node->join(known_id); + join_success = node.join(known_id); deadline = std::stod(argv[3]); } else { deadline = std::stod(argv[2]); - XBT_INFO("Hi, I'm going to create the network with id %u", node->getId()); - node->routingTableUpdate(node->getId()); + XBT_INFO("Hi, I'm going to create the network with id %u", node.getId()); + node.routingTableUpdate(node.getId()); } if (join_success) { - XBT_VERB("Ok, I'm joining the network with id %u", node->getId()); + XBT_VERB("Ok, I'm joining the network with id %u", node.getId()); // We start the main loop double next_lookup_time = simgrid::s4u::Engine::get_clock() + RANDOM_LOOKUP_INTERVAL; XBT_VERB("Main loop start"); - simgrid::s4u::Mailbox* mailbox = simgrid::s4u::Mailbox::by_name(std::to_string(node->getId())); + simgrid::s4u::Mailbox* mailbox = simgrid::s4u::Mailbox::by_name(std::to_string(node.getId())); while (simgrid::s4u::Engine::get_clock() < deadline) { - if (node->receive_comm == nullptr) - node->receive_comm = mailbox->get_async(&node->received_msg); + if (node.receive_comm == nullptr) + node.receive_comm = mailbox->get_async(&node.received_msg); - if (node->receive_comm->test()) { + if (node.receive_comm->test()) { // There has been a message, we need to handle it ! - kademlia::Message* msg = static_cast(node->received_msg); + const kademlia::Message* msg = static_cast(node.received_msg); if (msg) { - node->handleFindNode(msg); + node.handleFindNode(msg); delete msg->answer_; delete msg; - node->receive_comm = nullptr; + node.receive_comm = nullptr; } else simgrid::s4u::this_actor::sleep_for(1); } else { /* We search for a pseudo random node */ if (simgrid::s4u::Engine::get_clock() >= next_lookup_time) { - node->randomLookup(); + node.randomLookup(); next_lookup_time += RANDOM_LOOKUP_INTERVAL; } else { // Didn't get a message: sleep for a while... @@ -75,10 +75,7 @@ static int node(int argc, char* argv[]) XBT_INFO("I couldn't join the network :("); } XBT_DEBUG("I'm leaving the network"); - XBT_INFO("%u/%u FIND_NODE have succeeded", node->find_node_success, node->find_node_success + node->find_node_failed); - delete node; - - return 0; + XBT_INFO("%u/%u FIND_NODE have succeeded", node.find_node_success, node.find_node_success + node.find_node_failed); } /** @brief Main function */