X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a92d7b716f51a53dea7f59db8524d4add713b910..52d02fda9bad1a0ffe9b03b819e64ae1af4787db:/examples/msg/dht-pastry/dht-pastry.c diff --git a/examples/msg/dht-pastry/dht-pastry.c b/examples/msg/dht-pastry/dht-pastry.c index b9cac1eb3a..0cf0155b06 100644 --- a/examples/msg/dht-pastry/dht-pastry.c +++ b/examples/msg/dht-pastry/dht-pastry.c @@ -1,13 +1,13 @@ -/* Copyright (c) 2013-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2013-2018. 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. */ #include "simgrid/msg.h" #include "xbt/dynar.h" -#include +#include +#include XBT_LOG_NEW_DEFAULT_CATEGORY(msg_pastry, "Messages specific for this msg example"); @@ -190,27 +190,27 @@ static state_t node_get_state(node_t node) { } static void print_node_id(node_t node) { - XBT_INFO(" Id: %i '%08x' ", node->id, node->id); + XBT_INFO(" Id: %i '%08x' ", node->id, (unsigned)node->id); } static void print_node_neighborood_set(node_t node) { XBT_INFO(" Neighborhood:"); for (int i=0; ineighborhood_set[i]); + XBT_INFO(" %08x", (unsigned)node->neighborhood_set[i]); } static void print_node_routing_table(node_t node) { XBT_INFO(" Routing table:"); for (int i=0; irouting_table[i][j]); + XBT_INFO(" %08x ", (unsigned)node->routing_table[i][j]); } } /* Print the node namespace set */ static void print_node_namespace_set(node_t node) { XBT_INFO(" Namespace:"); for (int i=0; inamespace_set[i]); + XBT_INFO(" %08x", (unsigned)node->namespace_set[i]); } /* Print the node information */ @@ -237,7 +237,7 @@ static void handle_task(node_t node, msg_task_t task) { e_task_type_t type = task_data->type; // If the node is not ready keep the task for later if (node->ready != 0 && !(type==TASK_JOIN_LAST_REPLY || type==TASK_JOIN_REPLY)) { - XBT_DEBUG("Task pending %i", type); + XBT_DEBUG("Task pending %u", type); xbt_dynar_push(node->pending_tasks, &task); return; } @@ -245,13 +245,13 @@ static void handle_task(node_t node, msg_task_t task) { /* Try to join the ring */ case TASK_JOIN: next = routing_next(node, task_data->answer_id); - XBT_DEBUG("Join request from %08x forwarding to %08x", task_data->answer_id, next); + XBT_DEBUG("Join request from %08x forwarding to %08x", (unsigned)task_data->answer_id, (unsigned)next); type = TASK_JOIN_LAST_REPLY; req_data = xbt_new0(s_task_data_t,1); req_data->answer_id = task_data->sender_id; req_data->steps = task_data->steps + 1; - + // if next different from current node forward the join if (next!=node->id) { get_mailbox(next, mailbox); @@ -263,8 +263,8 @@ static void handle_task(node_t node, msg_task_t task) { task_free(task_sent); } type = TASK_JOIN_REPLY; - } - + } + // send back the current node state to the joining node req_data->type = type; req_data->sender_id = node->id; @@ -312,7 +312,7 @@ static void handle_task(node_t node, msg_task_t task) { // if the node is ready, do all the pending tasks and send update to known nodes if (node->ready==0) { XBT_DEBUG("Node %i is ready!!!", node->id); - while(xbt_dynar_length(node->pending_tasks)){ + while (not xbt_dynar_is_empty(node->pending_tasks)) { msg_task_t task; xbt_dynar_shift(node->pending_tasks, &task); handle_task(node, task); @@ -351,7 +351,7 @@ static void handle_task(node_t node, msg_task_t task) { print_node_namespace_set(node); int curr_namespace_set[NAMESPACE_SIZE]; int task_namespace_set[NAMESPACE_SIZE+1]; - + // Copy the current namespace and the task state namespace with state->id in the middle i=0; for (; istate->id; for (; inamespace_set[i]; + curr_namespace_set[i] = node->namespace_set[i]; task_namespace_set[i+1] = task_data->state->namespace_set[i]; } @@ -378,16 +378,13 @@ static void handle_task(node_t node, msg_task_t task) { // add lower elements j = NAMESPACE_SIZE/2-1; for (i=NAMESPACE_SIZE/2-1; i>=0; i--) { - if (min<0) { + if (min < 0 || curr_namespace_set[j] > task_namespace_set[min]) { node->namespace_set[i] = curr_namespace_set[j]; j--; } else if (curr_namespace_set[j] == task_namespace_set[min]) { node->namespace_set[i] = curr_namespace_set[j]; j--; min--; - } else if (curr_namespace_set[j] > task_namespace_set[min]) { - node->namespace_set[i] = curr_namespace_set[j]; - j--; } else { node->namespace_set[i] = task_namespace_set[min]; min--; @@ -401,19 +398,16 @@ static void handle_task(node_t node, msg_task_t task) { node->namespace_set[i] = curr_namespace_set[j]; j++; } else if (max >= 0){ - if (curr_namespace_set[j] == -1) { + if (curr_namespace_set[j] == -1 || curr_namespace_set[j] > task_namespace_set[max]) { node->namespace_set[i] = task_namespace_set[max]; max++; } else if (curr_namespace_set[j] == task_namespace_set[max]) { node->namespace_set[i] = curr_namespace_set[j]; j++; max++; - } else if (curr_namespace_set[j] < task_namespace_set[max]) { + } else { node->namespace_set[i] = curr_namespace_set[j]; j++; - } else { - node->namespace_set[i] = task_namespace_set[max]; - max++; } } } @@ -465,8 +459,8 @@ static int join(node_t node){ static int node(int argc, char *argv[]) { double init_time = MSG_get_clock(); - msg_task_t task_received = NULL; - int join_success = 0; + msg_task_t task_received = NULL; + int join_success = 0; double deadline; xbt_assert(argc == 3 || argc == 5, "Wrong number of arguments for this node"); s_node_t node = {0}; @@ -475,7 +469,7 @@ static int node(int argc, char *argv[]) node.ready = -1; node.pending_tasks = xbt_dynar_new(sizeof(msg_task_t), NULL); get_mailbox(node.id, node.mailbox); - XBT_DEBUG("New node with id %s (%08x)", node.mailbox, node.id); + XBT_DEBUG("New node with id %s (%08x)", node.mailbox, (unsigned)node.id); for (int i=0; i 2, + xbt_assert(argc > 2, "Usage: %s [-nb_bits=n] [-timeout=t] platform_file deployment_file\n" - "\tExample: %s ../msg_platform.xml pastry10.xml\n", + "\tExample: %s ../msg_platform.xml pastry10.xml\n", argv[0], argv[0]); char **options = &argv[1];