Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reduce code duplication.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 4 Oct 2017 20:06:12 +0000 (22:06 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 4 Oct 2017 20:58:26 +0000 (22:58 +0200)
examples/msg/dht-pastry/dht-pastry.c

index f7f0cca..c19cd35 100644 (file)
@@ -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--) {
       // 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--;
           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--;
         } 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){
          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++;
             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++;
             node->namespace_set[i] = curr_namespace_set[j];
             j++;
-          } else {
-            node->namespace_set[i] = task_namespace_set[max];
-            max++;
           }
         }
       }
           }
         }
       }