import FuncTorrent.Peer (handlePeerMsgs)
import FuncTorrent.PieceManager (initPieceMap)
import qualified FuncTorrent.Server as Server
-import FuncTorrent.Tracker (connectedPeers, initialTrackerState, trackerLoop)
+import FuncTorrent.Tracker (runTracker, getConnectedPeers, newTracker)
import Network (PortID (PortNumber))
import System.IO (withFile, IOMode (ReadWriteMode))
import System.Directory (doesFileExist)
fileLen = lengthInBytes (info m)
pieceHash = pieces (info m)
pLen = pieceLength (info m)
+ infohash = infoHash m
defaultPieceMap = initPieceMap pieceHash fileLen pLen
log $ "create FS msg channel"
fsMsgChannel <- FS.createMsgChannel
log "Trying to fetch peers"
_ <- forkIO $ Server.run serverSock peerId m pieceMap fsMsgChannel
log $ "Trackers: " ++ head (announceList m)
- -- (tstate, errstr) <- runTracker portnum peerId m
- tstate <- initialTrackerState $ lengthInBytes $ info m
- _ <- forkIO $ trackerLoop portnum peerId m tstate >> return ()
- ps <- readMVar (connectedPeers tstate)
+ trackerMsgChan <- newTracker
+ _ <- forkIO $ runTracker trackerMsgChan fsMsgChannel infohash portnum peerId (announceList m) fileLen
+ ps <- getConnectedPeers trackerMsgChan
log $ "Peers List : " ++ (show ps)
let p1 = head ps
handlePeerMsgs p1 peerId m pieceMap True fsMsgChannel