X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fa130fbc186ef1ed28032b15d79e3d88bf49634a..819b1e78f7b0dd5afc4373ec5319e800f2df8b12:/examples/c/dht-kademlia/node.c diff --git a/examples/c/dht-kademlia/node.c b/examples/c/dht-kademlia/node.c index 71b0512c4b..7e2ff568aa 100644 --- a/examples/c/dht-kademlia/node.c +++ b/examples/c/dht-kademlia/node.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2021. 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. */ @@ -73,7 +73,7 @@ unsigned int join(node_t node, unsigned int id_known) } else { handle_find_node(node, msg); } - free(msg->answer); + answer_free(msg->answer); free(msg); node->receive_comm = NULL; } else { @@ -81,7 +81,7 @@ unsigned int join(node_t node, unsigned int id_known) } } while (got_answer == 0); - /* Second step: Send a FIND_NODE to a a random node in buckets */ + /* Second step: Send a FIND_NODE to a random node in buckets */ unsigned int bucket_id = routing_table_find_bucket(node->table, id_known)->id; xbt_assert(bucket_id <= IDENTIFIER_SIZE); for (i = 0; ((bucket_id > i) || (bucket_id + i) <= IDENTIFIER_SIZE) && i < JOIN_BUCKETS_QUERIES; i++) { @@ -102,7 +102,7 @@ unsigned int join(node_t node, unsigned int id_known) * @param id node we are querying * @param destination node we are trying to find. */ -void send_find_node(node_t node, unsigned int id, unsigned int destination) +void send_find_node(const_node_t node, unsigned int id, unsigned int destination) { /* Gets the mailbox to send to */ sg_mailbox_t mailbox = get_node_mailbox(id); @@ -117,7 +117,7 @@ void send_find_node(node_t node, unsigned int id, unsigned int destination) * Sends to the best "KADEMLIA_ALPHA" nodes in the "node_list" array a "FIND_NODE" request, to ask them for their best * nodes */ -unsigned int send_find_node_to_best(node_t node, const_answer_t node_list) +unsigned int send_find_node_to_best(const_node_t node, const_answer_t node_list) { unsigned int i = 0; unsigned int j = 0; @@ -170,7 +170,6 @@ void routing_table_update(const_node_t node, unsigned int id) */ answer_t find_closest(const_node_t node, unsigned int destination_id) { - int i; answer_t answer = answer_init(destination_id); /* We find the corresponding bucket for the id */ const_bucket_t bucket = routing_table_find_bucket(node->table, destination_id); @@ -182,7 +181,7 @@ answer_t find_closest(const_node_t node, unsigned int destination_id) /* However, if we don't have enough elements in our bucket, we NEED to include at least "BUCKET_SIZE" elements * (if, of course, we know at least "BUCKET_SIZE" elements. So we're going to look unsigned into the other buckets. */ - for (i = 1; answer->size < BUCKET_SIZE && ((bucket_id - i > 0) || (bucket_id + i < IDENTIFIER_SIZE)); i++) { + for (int i = 1; answer->size < BUCKET_SIZE && ((bucket_id - i > 0) || (bucket_id + i < IDENTIFIER_SIZE)); i++) { /* We check the previous buckets */ if (bucket_id - i >= 0) { const_bucket_t bucket_p = &node->table->buckets[bucket_id - i]; @@ -204,7 +203,6 @@ answer_t find_closest(const_node_t node, unsigned int destination_id) unsigned int find_node(node_t node, unsigned int id_to_find, unsigned int count_in_stats) { - unsigned int i = 0; unsigned int queries; unsigned int answers; unsigned int destination_found = 0; @@ -241,6 +239,7 @@ unsigned int find_node(node_t node, unsigned int id_to_find, unsigned int count_ // Handle the answer routing_table_update(node, msg->sender_id); node_contact_t contact; + unsigned int i; xbt_dynar_foreach (node_list->nodes, i, contact) routing_table_update(node, contact->id); @@ -260,7 +259,7 @@ unsigned int find_node(node_t node, unsigned int id_to_find, unsigned int count_ timeout += simgrid_get_clock() - time_beginreceive; time_beginreceive = simgrid_get_clock(); } - free(msg->answer); + answer_free(msg->answer); free(msg); node->receive_comm = NULL; } else { @@ -298,7 +297,7 @@ void random_lookup(node_t node) } /** @brief Handles the answer to an incoming "find_node" message */ -void handle_find_node(node_t node, kademlia_message_t msg) +void handle_find_node(const_node_t node, const_kademlia_message_t msg) { routing_table_update(node, msg->sender_id); XBT_VERB("Received a FIND_NODE from %s (%s), he's trying to find %08x", sg_mailbox_get_name(msg->answer_to), @@ -320,7 +319,7 @@ unsigned int get_id_in_prefix(unsigned int id, unsigned int prefix) if (prefix == 0) { return 0; } else { - return (1U << ((unsigned int)(prefix - 1))) ^ id; + return (1U << (prefix - 1)) ^ id; } }