]> git.rkrishnan.org Git - functorrent.git/commitdiff
refactor mkPieceMap -> initPieceMap
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Tue, 15 Sep 2015 12:07:44 +0000 (17:37 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Tue, 15 Sep 2015 12:07:44 +0000 (17:37 +0530)
src/FuncTorrent/Peer.hs

index 2db57064fcf6a1737ebeeecb0ecf53dfe188eabe..61b5112c7811d43e765a4d59e01bb8d68e546999 100644 (file)
@@ -49,14 +49,17 @@ type PieceMap = Map Integer PieceData
 
 -- Make the initial Piece map, with the assumption that no peer has the
 -- piece and that every piece is pending download.
-mkPieceMap :: Integer -> ByteString -> [Integer] -> PieceMap
-mkPieceMap numPieces pieceHash pLengths = fromList kvs
-  where kvs = [(i, PieceData { peers = []
-                             , dlstate = Pending
-                             , hash = h
-                             , len = pLen })
-              | (i, h, pLen) <- zip3 [0..numPieces] hashes pLengths]
-        hashes = splitN 20 pieceHash
+initPieceMap :: ByteString  -> Integer -> Integer -> PieceMap
+initPieceMap pieceHash fileLen pieceLen = fromList kvs
+  where
+    numPieces = (toInteger . (`quot` 20) . BC.length) pieceHash
+    kvs = [(i, PieceData { peers = []
+                         , dlstate = Pending
+                         , hash = h
+                         , len = pLen })
+          | (i, h, pLen) <- zip3 [0..numPieces] hashes pLengths]
+    hashes = splitN 20 pieceHash
+    pLengths = (splitNum fileLen pieceLen)
 
 havePiece :: PieceMap -> Integer -> Bool
 havePiece pm index =
@@ -123,11 +126,10 @@ handlePeerMsgs p peerId m = do
   doHandshake h p (infoHash m) peerId
   let pstate = toPeerState h p False False True True
       pieceHash = pieces (info m)
-      numPieces = (toInteger . (`quot` 20) . BC.length) pieceHash
       pLen = pieceLength (info m)
       fileLen = lengthInBytes (info m)
       fileName = name (info m)
-      pieceStatus = mkPieceMap numPieces pieceHash (splitNum fileLen pLen)
+      pieceStatus = initPieceMap pieceHash fileLen pLen
   createDummyFile fileName (fromIntegral fileLen)
   _ <- runStateT (msgLoop pieceStatus fileName) pstate
   return ()