(startThread,
MsgChannel,
createMsgChannel,
- Msg(..),
+ writePiece,
Piece(..),
pieceMapFromFile
)
where
import Control.Concurrent (ThreadId, forkIO)
-import Control.Concurrent.Chan (Chan, newChan, readChan)
+import Control.Concurrent.Chan (Chan, newChan, readChan, writeChan)
import Control.Concurrent.MVar (MVar, putMVar)
import Control.Monad (forever)
import Data.Map (traverseWithKey)
-
import qualified Data.ByteString as BS
import Data.Map ((!))
import System.IO (Handle, IOMode (ReadWriteMode), withFile)
if isHashValid
then return $ v { dlstate = Have }
else return v
+
+writePiece :: MsgChannel -> PieceNum -> BS.ByteString -> IO ()
+writePiece c pieceNum bs = do
+ writeChan c $ WritePiece (Piece pieceNum bs)
+