]> AND Public Git Repository - simgrid.git/blobdiff - examples/c/dht-kademlia/node.c
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use meaningful names for dragonfly coords.
[simgrid.git] / examples / c / dht-kademlia / node.c
index 71b0512c4b4664ad0011f2c3731343c393fa22a0..da155cc306f10dbffa52b55423df66fea4fefa10 100644 (file)
@@ -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 {
@@ -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];
@@ -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;
   }
 }