conjure-0.1: src/Conjure/Network/Server.hs
module Conjure.Network.Server where
import Conjure.Types
import Conjure.Network.Peer ( connectionFromPeer )
import Conjure.Debug
import Control.Concurrent
import Control.Concurrent.STM
import Data.Map (Map)
import Data.ByteString
import Network ( PortID(..), PortNumber, listenOn, accept )
runServer :: TVar [ConnectedPeer]
-> TVar (Map ByteString ActiveTorrent)
-> PortNumber
-> IO ()
runServer connectedPeers torrentMap port
= do sock <- listenOn (PortNumber port)
debug $ "Server is awaiting connections. Socket: " ++ show (sock, port)
let loop = do (handle, _, _) <- accept sock
-- debug $ "(server) got connect from: " ++ show hostname ++ ":" ++ show port ++ " (handle: " ++ show handle ++ ")"
forkIO (connectionFromPeer connectedPeers torrentMap handle)
loop
loop