NotInterestedMsg -> do
modify (\st' -> st' {heInterested = False})
msgLoop pieceStatus msgchannel
- CancelMsg _ _ _ -> -- check if valid index, begin, length
+ CancelMsg {} -> -- check if valid index, begin, length
msgLoop pieceStatus msgchannel
PortMsg _ ->
msgLoop pieceStatus msgchannel
let pieceStatus' = updatePieceAvailability pieceStatus p [idx]
msgLoop pieceStatus' msgchannel
_ -> do
- liftIO $ putStrLn $ ".. not doing anything with the msg"
+ liftIO $ putStrLn ".. not doing anything with the msg"
msgLoop pieceStatus msgchannel
-- No need to handle PieceMsg and RequestMsg here.
bfListLen = length bfList
RequestMsg i o l -> do putWord32be 13
putWord8 6
- putWord32be (fromIntegral i)
- putWord32be (fromIntegral o)
- putWord32be (fromIntegral l)
+ putIndexOffsetLength i o l
PieceMsg i o b -> do putWord32be $ fromIntegral (9 + blocklen)
putWord8 7
putWord32be (fromIntegral i)
blocklen = length blockList
CancelMsg i o l -> do putWord32be 13
putWord8 8
- putWord32be (fromIntegral i)
- putWord32be (fromIntegral o)
- putWord32be (fromIntegral l)
+ putIndexOffsetLength i o l
PortMsg p -> do putWord32be 3
putWord8 9
putWord16be (fromIntegral p)
+ where putIndexOffsetLength i o l = do
+ putWord32be (fromIntegral i)
+ putWord32be (fromIntegral o)
+ putWord32be (fromIntegral l)
+
get = do
l <- getWord32be
msgid <- getWord8
1 -> return UnChokeMsg
2 -> return InterestedMsg
3 -> return NotInterestedMsg
- 4 -> liftM (HaveMsg . fromIntegral) getWord32be
- 5 -> liftM (BitFieldMsg . pack) (replicateM (fromIntegral l - 1) getWord8)
+ 4 -> fmap (HaveMsg . fromIntegral) getWord32be
+ 5 -> fmap (BitFieldMsg . pack) (replicateM (fromIntegral l - 1) getWord8)
6 -> liftA3 RequestMsg getInteger getInteger getInteger
where getInteger = fromIntegral <$> getWord32be
7 -> liftA3 PieceMsg getInteger getInteger (pack <$> replicateM (fromIntegral l - 9) getWord8)
where getInteger = fromIntegral <$> getWord32be
8 -> liftA3 CancelMsg getInteger getInteger getInteger
where getInteger = fromIntegral <$> getWord32be
- 9 -> liftM (PortMsg . fromIntegral) getWord16be
+ 9 -> fmap (PortMsg . fromIntegral) getWord16be
_ -> error ("unknown message ID: " ++ show msgid)
getMsg :: Handle -> IO PeerMsg