A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
reduce the scope of some variables to please codacy
[simgrid.git]
/
examples
/
msg
/
dht-kademlia
/
dht-kademlia.c
diff --git
a/examples/msg/dht-kademlia/dht-kademlia.c
b/examples/msg/dht-kademlia/dht-kademlia.c
index
f6885b9
..
439ad0f
100644
(file)
--- a/
examples/msg/dht-kademlia/dht-kademlia.c
+++ b/
examples/msg/dht-kademlia/dht-kademlia.c
@@
-20,15
+20,14
@@
static void main_loop(node_t node, double deadline)
{
double next_lookup_time = MSG_get_clock() + random_lookup_interval;
XBT_VERB("Main loop start");
-
while (MSG_get_clock() < deadline) {
+
if (node->receive_comm == NULL) {
node->task_received = NULL;
node->receive_comm = MSG_task_irecv(&node->task_received, node->mailbox);
}
-
if (node->receive_comm) {
- if (
MSG_comm_test(node->receive_comm) == 0
) {
+ if (
!MSG_comm_test(node->receive_comm)
) {
/* We search for a pseudo random node */
if (MSG_get_clock() >= next_lookup_time) {
random_lookup(node);
@@
-43,12
+42,12
@@
static void main_loop(node_t node, double deadline)
MSG_comm_destroy(node->receive_comm);
node->receive_comm = NULL;
- if (status == MSG_OK
&& node->task_received != NULL
) {
+ if (status == MSG_OK) {
xbt_assert((node->task_received != NULL), "We received an incorrect task");
handle_task(node, node->task_received);
} else {
- xbt_
die("A problem occurred. Comm ended in status '%d' and there was '%d' received task",
-
status, node->task_received == NULL ? 0 : 1
);
+ xbt_
assert((MSG_comm_get_task(node->receive_comm) == NULL), "Comm failed but received a task.");
+
XBT_DEBUG("Nevermind, the communication has failed."
);
}
}
} else {
@@
-58,7
+57,7
@@
static void main_loop(node_t node, double deadline)
}
//Cleanup the receiving communication.
if (node->receive_comm != NULL) {
- if (MSG_comm_test(node->receive_comm)
!= 0
&& MSG_comm_get_status(node->receive_comm) == MSG_OK) {
+ if (MSG_comm_test(node->receive_comm) && MSG_comm_get_status(node->receive_comm) == MSG_OK) {
task_free(MSG_comm_get_task(node->receive_comm));
}
MSG_comm_destroy(node->receive_comm);
@@
-137,7
+136,8
@@
unsigned int join(node_t node, unsigned int id_known)
answer_got = 1;
//retrieve the node list and ping them.
task_data_t data = MSG_task_get_data(node->task_received);
- if (data && data->type == TASK_FIND_NODE_ANSWER) {
+ xbt_assert((data != NULL), "Null data received");
+ if (data->type == TASK_FIND_NODE_ANSWER) {
node_contact_t contact;
node_list = data->answer;
xbt_dynar_foreach(node_list->nodes, i, contact) {
@@
-159,8
+159,8
@@
unsigned int join(node_t node, unsigned int id_known)
} while (answer_got == 0 && trial < max_join_trials);
/* Second step: Send a FIND_NODE to a a random node in buckets */
unsigned int bucket_id = routing_table_find_bucket(node->table, id_known)->id;
- for (i = 0; ((bucket_id
- i) > 0
|| (bucket_id + i) <= identifier_size) && i < JOIN_BUCKETS_QUERIES; i++) {
- if (bucket_id
- i > 0
) {
+ for (i = 0; ((bucket_id
> i)
|| (bucket_id + i) <= identifier_size) && i < JOIN_BUCKETS_QUERIES; i++) {
+ if (bucket_id
> i
) {
unsigned int id_in_bucket = get_id_in_prefix(node->id, bucket_id - i);
find_node(node, id_in_bucket, 0);
}
@@
-220,9
+220,10
@@
unsigned int find_node(node_t node, unsigned int id_to_find, unsigned int count_
xbt_assert((node->task_received != NULL), "Invalid task received");
//Figure out if we received an answer or something else
task_data_t data = MSG_task_get_data(node->task_received);
+ xbt_assert((data != NULL), "No data in the task");
//Check if what we have received is what we are looking for.
- if (data
&& data
->type == TASK_FIND_NODE_ANSWER && data->answer->destination_id == id_to_find) {
+ if (data->type == TASK_FIND_NODE_ANSWER && data->answer->destination_id == id_to_find) {
//Handle the answer
node_routing_table_update(node, data->sender_id);
node_contact_t contact;
@@
-279,7
+280,6
@@
unsigned int ping(node_t node, unsigned int id_to_ping)
char mailbox[MAILBOX_NAME_SIZE];
snprintf(mailbox,MAILBOX_NAME_SIZE, "%d", id_to_ping);
- unsigned int destination_found = 0;
double timeout = MSG_get_clock() + ping_timeout;
msg_task_t ping_task = task_new_ping(node->id, node->mailbox, MSG_host_get_name(MSG_host_self()));
@@
-298,30
+298,29
@@
unsigned int ping(node_t node, unsigned int id_to_ping)
task_received = NULL;
msg_error_t status =
MSG_task_receive_with_timeout(&task_received, node->mailbox, ping_timeout);
- if (status == MSG_OK && task_received) {
+ if (status == MSG_OK) {
+ xbt_assert((task_received != NULL), "Invalid task received");
//Checking if it's what we are waiting for or not.
task_data_t data = MSG_task_get_data(task_received);
- if (data && data->type == TASK_PING_ANSWER && id_to_ping == data->sender_id) {
+ xbt_assert((data != NULL), "didn't receive any data...");
+ if (data->type == TASK_PING_ANSWER && id_to_ping == data->sender_id) {
XBT_VERB("Ping to %s succeeded", mailbox);
node_routing_table_update(node, data->sender_id);
- destination_found = 1;
task_free(task_received);
+ return 1; // Destination found, ping succeeded!
} else {
//If it's not our answer, we answer the query anyway.
handle_task(node, task_received);
}
}
- } while (
destination_found == 0 &&
MSG_get_clock() < timeout);
+ } while (MSG_get_clock() < timeout);
if (MSG_get_clock() >= timeout) {
XBT_DEBUG("Ping to %s has timeout.", mailbox);
return 0;
}
- if (destination_found == -1) {
- XBT_DEBUG("It seems that %s is offline...", mailbox);
- return 0;
- }
- return 1;
+ XBT_DEBUG("It seems that %s is offline...", mailbox);
+ return -1;
}
/** @brief Does a pseudo-random lookup for someone in the system
@@
-361,11
+360,10
@@
unsigned int send_find_node_to_best(node_t node, answer_t node_list)
unsigned int i = 0;
unsigned int j = 0;
unsigned int destination = node_list->destination_id;
- node_contact_t node_to_query;
while (j < kademlia_alpha && i < node_list->size) {
/* We need to have at most "kademlia_alpha" requests each time, according to the protocol */
/* Gets the node we want to send the query to */
- node_to_query = xbt_dynar_get_as(node_list->nodes, i, node_contact_t);
+ node_
contact_t node_
to_query = xbt_dynar_get_as(node_list->nodes, i, node_contact_t);
if (node_to_query->id != node->id) { /* No need to query ourselves */
send_find_node(node, node_to_query->id, destination);
j++;
@@
-379,24
+377,23
@@
unsigned int send_find_node_to_best(node_t node, answer_t node_list)
void handle_task(node_t node, msg_task_t task)
{
task_data_t data = MSG_task_get_data(task);
- if (data) {
- //Adding/updating the guy to our routing table
- node_routing_table_update(node, data->sender_id);
- switch (data->type) {
- case TASK_FIND_NODE:
- handle_find_node(node, data);
- break;
- case TASK_FIND_NODE_ANSWER:
- XBT_DEBUG("Received a wrong answer for a FIND_NODE");
- break;
- case TASK_PING:
- handle_ping(node, data);
- break;
- default:
- break;
- }
- task_free(task);
+ xbt_assert((data != NULL), "Received NULL data");
+ //Adding/updating the guy to our routing table
+ node_routing_table_update(node, data->sender_id);
+ switch (data->type) {
+ case TASK_FIND_NODE:
+ handle_find_node(node, data);
+ break;
+ case TASK_FIND_NODE_ANSWER:
+ XBT_DEBUG("Received a wrong answer for a FIND_NODE");
+ break;
+ case TASK_PING:
+ handle_ping(node, data);
+ break;
+ default:
+ break;
}
+ task_free(task);
}
/** @brief Handles the answer to an incoming "find_node" task */