Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
please sonar by removing useless asignments and return statements
[simgrid.git] / examples / msg / app-bittorrent / peer.c
index 09fd875..d73560c 100644 (file)
@@ -1,5 +1,4 @@
-/* Copyright (c) 2012-2016. The SimGrid Team.
- * All rights reserved.                                                     */
+/* Copyright (c) 2012-2016. 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. */
@@ -190,7 +189,6 @@ int get_peers_data(peer_t peer)
       MSG_comm_destroy(comm_received);
       tracker_task_data_free(data);
       MSG_task_destroy(task_received);
-      comm_received = NULL;
     }
   }
 
@@ -207,8 +205,8 @@ void peer_init(peer_t peer, int id, int seed)
   peer->id = id;
   snprintf(peer->mailbox,MAILBOX_SIZE-1, "%d", id);
   snprintf(peer->mailbox_tracker,MAILBOX_SIZE-1, "tracker_%d", id);
-  peer->peers = xbt_dict_new();
-  peer->active_peers = xbt_dict_new();
+  peer->peers        = xbt_dict_new_homogeneous(NULL);
+  peer->active_peers = xbt_dict_new_homogeneous(NULL);
   peer->hostname = MSG_host_get_name(MSG_host_self());
 
   peer->bitfield = xbt_new(char, FILE_PIECES + 1);
@@ -228,7 +226,7 @@ void peer_init(peer_t peer, int id, int seed)
 
   peer->current_pieces = xbt_dynar_new(sizeof(int), NULL);
 
-  peer->stream = (RngStream)MSG_host_get_property_value(MSG_host_self(), "stream");
+  peer->stream        = (RngStream)MSG_host_get_data(MSG_host_self());
   peer->comm_received = NULL;
 
   peer->round = 0;
@@ -330,7 +328,7 @@ void handle_message(peer_t peer, msg_task_t task)
   case MESSAGE_UNCHOKE:
     xbt_assert((remote_peer != NULL), "A non-in-our-list peer has sent us a message. WTH ?");
     XBT_DEBUG("Received a UNCHOKE message from %s (%s)", message->mailbox, message->issuer_host_name);
-    xbt_assert(remote_peer->choked_download, "WTF !!!");
+    xbt_assert(remote_peer->choked_download);
     remote_peer->choked_download = 0;
     //Send requests to the peer, since it has unchoked us
     if (remote_peer->am_interested)
@@ -339,7 +337,7 @@ void handle_message(peer_t peer, msg_task_t task)
   case MESSAGE_CHOKE:
     xbt_assert((remote_peer != NULL), "A non-in-our-list peer has sent us a message. WTH ?");
     XBT_DEBUG("Received a CHOKE message from %s (%s)", message->mailbox, message->issuer_host_name);
-    xbt_assert(!remote_peer->choked_download, "WTF !!!");
+    xbt_assert(!remote_peer->choked_download);
     remote_peer->choked_download = 1;
     remove_current_piece(peer, remote_peer, remote_peer->current_piece);
     break;
@@ -360,7 +358,7 @@ void handle_message(peer_t peer, msg_task_t task)
     }
     break;
   case MESSAGE_REQUEST:
-    xbt_assert(remote_peer->interested, "WTF !!!");
+    xbt_assert(remote_peer->interested);
 
     xbt_assert((message->index >= 0 && message->index < FILE_PIECES), "Wrong request received");
     if (remote_peer->choked_upload == 0) {
@@ -377,7 +375,7 @@ void handle_message(peer_t peer, msg_task_t task)
   case MESSAGE_PIECE:
     XBT_DEBUG("Received piece %d (%d,%d) from %s (%s)", message->index, message->block_index,
               message->block_index + message->block_length, message->mailbox, message->issuer_host_name);
-    xbt_assert(!remote_peer->choked_download, "WTF !!!");
+    xbt_assert(!remote_peer->choked_download);
     xbt_assert(remote_peer->am_interested || ENABLE_END_GAME_MODE,
                "Can't received a piece if I'm not interested wihtout end-game mode!"
                "piece (%d) bitfield(%s) remote bitfield(%s)", message->index, peer->bitfield, remote_peer->bitfield);
@@ -466,9 +464,7 @@ void update_pieces_count_from_bitfield(peer_t peer, char *bitfield)
  */
 int select_piece_to_download(peer_t peer, connection_t remote_peer)
 {
-  int piece = -1;
-
-  piece = partially_downloaded_piece(peer, remote_peer);
+  int piece = partially_downloaded_piece(peer, remote_peer);
   // strict priority policy
   if (piece != -1)
     return piece;
@@ -476,8 +472,9 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
   // end game mode
   if (xbt_dynar_length(peer->current_pieces) >= (FILE_PIECES - peer->pieces) &&
       (is_interested(peer, remote_peer) != 0)) {
-    if(ENABLE_END_GAME_MODE == 0)
+#if ENABLE_END_GAME_MODE == 0
       return -1;
+#endif
     int i;
     int nb_interesting_pieces = 0;
     int current_index = 0;
@@ -487,7 +484,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         nb_interesting_pieces++;
       }
     }
-    xbt_assert(nb_interesting_pieces != 0, "WTF !!!");
+    xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
     int random_piece_index = RngStream_RandInt(peer->stream, 0, nb_interesting_pieces - 1);
     for (i = 0; i < FILE_PIECES; i++) {
@@ -499,7 +496,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         current_index++;
       }
     }
-    xbt_assert(piece != -1, "WTF !!!");
+    xbt_assert(piece != -1);
     return piece;
   }
   // Random first policy
@@ -514,7 +511,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         nb_interesting_pieces++;
       }
     }
-    xbt_assert(nb_interesting_pieces != 0, "WTF !!!");
+    xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
     int random_piece_index = RngStream_RandInt(peer->stream, 0, nb_interesting_pieces - 1);
     for (i = 0; i < FILE_PIECES; i++) {
@@ -527,7 +524,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         current_index++;
       }
     }
-    xbt_assert(piece != -1, "WTF !!!");
+    xbt_assert(piece != -1);
     return piece;
   } else {                      // Rarest first policy
     int i;
@@ -541,7 +538,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         min = peer->pieces_count[i];
     }
     xbt_assert(min != SHRT_MAX ||
-               (is_interested_and_free(peer, remote_peer) ==0), "WTF !!!");
+               (is_interested_and_free(peer, remote_peer) ==0));
     // compute the number of rarest pieces
     for (i = 0; i < FILE_PIECES; i++) {
       if (peer->pieces_count[i] == min && peer->bitfield[i] == '0' &&
@@ -549,7 +546,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         nb_min_pieces++;
     }
     xbt_assert(nb_min_pieces != 0 ||
-               (is_interested_and_free(peer, remote_peer)==0), "WTF !!!");
+               (is_interested_and_free(peer, remote_peer)==0));
     // get a random rarest piece
     int random_rarest_index = RngStream_RandInt(peer->stream, 0, nb_min_pieces - 1);
     for (i = 0; i < FILE_PIECES; i++) {
@@ -562,7 +559,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
         current_index++;
       }
     }
-    xbt_assert(piece != -1 || (is_interested_and_free(peer, remote_peer) == 0), "WTF !!!");
+    xbt_assert(piece != -1 || (is_interested_and_free(peer, remote_peer) == 0));
     return piece;
   }
 }
@@ -619,10 +616,12 @@ void update_choked_peers(peer_t peer)
           i++;
         }
         xbt_dict_cursor_free(&cursor);
-        if ((peer_choosed->interested == 0) ||
-            (peer_choosed->choked_upload == 0)) {
+        if (peer_choosed == NULL)
+          THROWF(unknown_error, 0, "A peer should have be selected at this point");
+        else if ((peer_choosed->interested == 0) || (peer_choosed->choked_upload == 0))
           peer_choosed = NULL;
-        }
+        else
+          XBT_DEBUG("Nothing to do, keep going");
         j++;
       } while (peer_choosed == NULL && j < MAXIMUM_PAIRS);
     } else {
@@ -647,7 +646,7 @@ void update_choked_peers(peer_t peer)
     if (peer_choked != NULL) {
       xbt_assert((!peer_choked->choked_upload), "Tries to choked a choked peer");
       peer_choked->choked_upload = 1;
-      xbt_assert((*((int *) key_choked) == peer_choked->id), "WTF !!!");
+      xbt_assert((*((int *) key_choked) == peer_choked->id));
       update_active_peers_set(peer, peer_choked);
       XBT_DEBUG("(%d) Sending a CHOKE to %d", peer->id, peer_choked->id);
       send_choked(peer, peer_choked->mailbox);
@@ -774,7 +773,7 @@ void send_request_to_peer(peer_t peer, connection_t remote_peer, int piece)
 {
   remote_peer->current_piece = piece;
   xbt_assert(remote_peer->bitfield, "bitfield not received");
-  xbt_assert(remote_peer->bitfield[piece] == '1', "WTF !!!");
+  xbt_assert(remote_peer->bitfield[piece] == '1');
   int block_index = get_first_block(peer, piece);
   if (block_index != -1) {
     int block_length = PIECES_BLOCKS - block_index;