Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add default label to switch.
[simgrid.git] / examples / java / app / bittorrent / Peer.java
index b7ce0c3..8c07d84 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
+/* Copyright (c) 2006-2014, 2016-2017. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -50,12 +50,12 @@ public class Peer extends Process {
       Msg.info("Wrong number of arguments");
     }
     if (args.length == 3) {
-      init(Integer.valueOf(args[0]),true);
+      init(Integer.parseInt(args[0]),true);
     } else {
-      init(Integer.valueOf(args[0]),false);
+      init(Integer.parseInt(args[0]),false);
     }
     //Retrieve the deadline
-    deadline = Double.valueOf(args[1]);
+    deadline = Double.parseDouble(args[1]);
     if (deadline < 0) {
       Msg.info("Wrong deadline supplied");
       return;
@@ -216,7 +216,7 @@ public class Peer extends Process {
     return success;
   }
 
-  void handleMessage(Task task) {
+  private void handleMessage(Task task) {
     MessageTask message = (MessageTask)task;
     Connection remotePeer = peers.get(message.peerId);
     switch (message.type) {
@@ -325,6 +325,9 @@ public class Peer extends Process {
           }
         }
       break;
+      default:
+        Msg.error("Unexpected message type: " + message.type);
+        break;
     }
     if (remotePeer != null) {
       remotePeer.addSpeedValue(1 / (Msg.getClock() - beginReceiveTime));
@@ -332,7 +335,7 @@ public class Peer extends Process {
     beginReceiveTime = Msg.getClock();
   }
 
-  void waitForPieces() {
+  private void waitForPieces() {
     boolean finished = false;
     while (Msg.getClock() < deadline && !finished) {
       if (commReceived == null) {
@@ -365,7 +368,7 @@ public class Peer extends Process {
    * @brief Updates the list of who has a piece from a bitfield
    * @param bitfield bitfield
    */
-  private void updatePiecesCountFromBitfield(char bitfield[]) {
+  private void updatePiecesCountFromBitfield(char[] bitfield) {
     for (int i = 0; i < Common.FILE_PIECES; i++) {
       if (bitfield[i] == '1') {
         piecesCount[i]++;
@@ -380,18 +383,16 @@ public class Peer extends Process {
    * If the peer has more than pieces, he downloads the pieces that are the less
    * replicated
    */
-  void updateCurrentPiece() {
+  private void updateCurrentPiece() {
     if (currentPieces.size() >= (Common.FILE_PIECES - pieces)) {
       return;
     }
-//    if (pieces < 3) {
-      do {
-        currentPiece = stream.randInt(0,Common.FILE_PIECES - 1);
-      } while (!(bitfield[currentPiece] == '0' && !currentPieces.contains(currentPiece)));
-//    }
-//    else {
-      //TODO trivial min algorithm.
-//    }
+
+    //TODO: trivial min algorithm when pieces >= 3
+    do {
+      currentPiece = stream.randInt(0,Common.FILE_PIECES - 1);
+    } while (!(bitfield[currentPiece] == '0' && !currentPieces.contains(currentPiece)));
+
     currentPieces.add(currentPiece);
     Msg.debug("New interested piece: " + currentPiece);
     assert currentPiece >= 0 && currentPiece < Common.FILE_PIECES;
@@ -426,9 +427,9 @@ public class Peer extends Process {
     } else {
       //Random optimistic unchoking
       if (round == 0) {
-        int j = 0, i;
+        int j = 0;
         do {
-          i = 0;
+          int i = 0;
           int idChosen = stream.randInt(0,peers.size() - 1);
           for (Connection connection : peers.values()) {
             if (i == idChosen) {
@@ -519,10 +520,9 @@ public class Peer extends Process {
       return;
     }
     for (Integer piece : currentPieces) {
-      //Getting the block to send.  
-      int blockIndex = -1, blockLength = 0;
-      blockIndex = getFirstBlock(piece);      
-      blockLength = Common.PIECES_BLOCKS - blockIndex ;
+      //Getting the block to send.
+      int blockIndex = getFirstBlock(piece);
+      int blockLength = Common.PIECES_BLOCKS - blockIndex ;
       blockLength = blockLength > Common.BLOCKS_REQUESTED ? Common.BLOCKS_REQUESTED : blockLength;    
       if (remotePeer.bitfield[piece] == '1') {
         sendRequest(remotePeer.mailbox, piece, blockIndex, blockLength);
@@ -625,10 +625,9 @@ public class Peer extends Process {
   }
 
   private String getStatus() {
-    String s = "";
-    for (int i = 0; i < Common.FILE_PIECES; i++) {
-      s = s + bitfield[i];
-    }
-    return s;
+    StringBuilder s = new StringBuilder("");
+    for (int i = 0; i < Common.FILE_PIECES; i++)
+      s.append(bitfield[i]);
+    return s.toString();
   }
 }