Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Revert "Let our examples compile with java 1.6, or almost"
[simgrid.git] / examples / java / app / bittorrent / Peer.java
index 7343686..0bdc770 100644 (file)
@@ -33,10 +33,10 @@ public class Peer extends Process {
   protected char[][] bitfieldBlocks = new char[Common.FILE_PIECES][Common.PIECES_BLOCKS];
   protected short[] piecesCount = new short[Common.FILE_PIECES];
   protected int piecesRequested = 0;
-  protected ArrayList<Integer> currentPieces = new ArrayList<Integer>();
+  protected ArrayList<Integer> currentPieces = new ArrayList<>();
   protected int currentPiece = -1;
-  protected HashMap<Integer, Connection> activePeers = new HashMap<Integer, Connection>();  
-  protected HashMap<Integer, Connection> peers = new HashMap<Integer, Connection>();
+  protected HashMap<Integer, Connection> activePeers = new HashMap<>();
+  protected HashMap<Integer, Connection> peers = new HashMap<>();
   protected Comm commReceived = null;
 
   public Peer(Host host, String name, String[]args) {
@@ -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;
@@ -115,6 +115,7 @@ public class Peer extends Process {
         }
       }
       catch (MsgException e) {
+        e.printStackTrace();
         commReceived = null;
       }
     }
@@ -176,7 +177,8 @@ public class Peer extends Process {
   }
 
   private boolean getPeersData() {
-    boolean success = false, sendSuccess = false;
+    boolean success = false;
+    boolean sendSuccess = false;
     double timeout = Msg.getClock() + Common.GET_PEERS_TIMEOUT;
     //Build the task to send to the tracker
     TrackerTask taskSend = new TrackerTask(hostname, mailboxTracker, id);
@@ -188,6 +190,7 @@ public class Peer extends Process {
         sendSuccess = true;
       }
       catch (MsgException e) {
+        e.printStackTrace();
       }
     }
     while (!success && Msg.getClock() < timeout) {
@@ -204,7 +207,9 @@ public class Peer extends Process {
           success = true;
         }
       }
-      catch (MsgException e) {}
+      catch (MsgException e) {
+        e.printStackTrace();
+      }
       commReceived = null;
     }
     commReceived = null;
@@ -360,7 +365,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]++;
@@ -379,16 +384,14 @@ public class Peer extends Process {
     if (currentPieces.size() >= (Common.FILE_PIECES - pieces)) {
       return;
     }
-    if (true || pieces < 3) {
-      int peerPiece;
+//    if (pieces < 3) {
       do {
         currentPiece = stream.randInt(0,Common.FILE_PIECES - 1);
       } while (!(bitfield[currentPiece] == '0' && !currentPieces.contains(currentPiece)));
-    }
-    else {
-      //trivial min algorithm.
-      //TODO
-    }
+//    }
+//    else {
+      //TODO trivial min algorithm.
+//    }
     currentPieces.add(currentPiece);
     Msg.debug("New interested piece: " + currentPiece);
     assert currentPiece >= 0 && currentPiece < Common.FILE_PIECES;
@@ -423,9 +426,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) {
@@ -434,7 +437,7 @@ public class Peer extends Process {
             }
             i++;
           } //TODO: Not really the best way ever
-          if (!peerChoosed.interested) {
+          if (peerChoosed != null && !peerChoosed.interested) {
             peerChoosed = null;
           }
           j++;
@@ -516,10 +519,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);