X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/611d822b02f836d7abe031cced6adc4281ef4356..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 ac7c9d77e9..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-2018. 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,54 +17,54 @@ 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::getClock() + random_lookup_interval; + double next_lookup_time = simgrid::s4u::Engine::get_clock() + RANDOM_LOOKUP_INTERVAL; XBT_VERB("Main loop start"); - simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(std::to_string(node->getId())); + simgrid::s4u::Mailbox* mailbox = simgrid::s4u::Mailbox::by_name(std::to_string(node.getId())); - while (simgrid::s4u::Engine::getClock() < deadline) { - if (node->receive_comm == nullptr) - node->receive_comm = mailbox->get_async(&node->received_msg); + 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->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::getClock() >= next_lookup_time) { - node->randomLookup(); - next_lookup_time += random_lookup_interval; + if (simgrid::s4u::Engine::get_clock() >= next_lookup_time) { + node.randomLookup(); + next_lookup_time += RANDOM_LOOKUP_INTERVAL; } else { // Didn't get a message: sleep for a while... simgrid::s4u::this_actor::sleep_for(1); @@ -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 */ @@ -87,16 +84,17 @@ int main(int argc, char* argv[]) simgrid::s4u::Engine e(&argc, argv); /* Check the arguments */ - xbt_assert(argc > 2, "Usage: %s platform_file deployment_file\n\tExample: %s cluster.xml dht-kademlia_d.xml\n", + xbt_assert(argc > 2, + "Usage: %s platform_file deployment_file\n\tExample: %s cluster_backbone.xml dht-kademlia_d.xml\n", argv[0], argv[0]); - e.loadPlatform(argv[1]); - e.registerFunction("node", node); - e.loadDeployment(argv[2]); + e.load_platform(argv[1]); + e.register_function("node", node); + e.load_deployment(argv[2]); e.run(); - XBT_INFO("Simulated time: %g", simgrid::s4u::Engine::getClock()); + XBT_INFO("Simulated time: %g", simgrid::s4u::Engine::get_clock()); return 0; }