1+ module Main (main ) where
2+
13import System.Environment (getArgs )
24import Network.Transport
3- import Network.Transport.TCP (createTransport )
5+ import Network.Transport.TCP (createTransport , defaultTCPAddr , defaultTCPParameters )
46import Control.Concurrent.MVar (MVar , newEmptyMVar , takeMVar , putMVar , newMVar , readMVar , modifyMVar_ , modifyMVar )
57import Control.Concurrent (forkIO )
68import Control.Monad (forever , forM , unless , when )
@@ -11,12 +13,12 @@ import qualified Data.Map as Map (fromList, elems, insert, member, empty, size,
1113
1214chatClient :: MVar () -> EndPoint -> EndPointAddress -> IO ()
1315chatClient done endpoint serverAddr = do
14- connect endpoint serverAddr ReliableOrdered
16+ _ <- connect endpoint serverAddr ReliableOrdered defaultConnectHints
1517 cOut <- getPeers >>= connectToPeers
1618 cIn <- newMVar Map. empty
1719
1820 -- Listen for incoming messages
19- forkIO . forever $ do
21+ _ <- forkIO . forever $ do
2022 event <- receive endpoint
2123 case event of
2224 Received _ msg ->
@@ -26,7 +28,7 @@ chatClient done endpoint serverAddr = do
2628 didAdd <- modifyMVar cOut $ \ conns ->
2729 if not (Map. member addr conns)
2830 then do
29- Right conn <- connect endpoint addr ReliableOrdered
31+ Right conn <- connect endpoint addr ReliableOrdered defaultConnectHints
3032 return (Map. insert addr conn conns, True )
3133 else
3234 return (conns, False )
@@ -38,8 +40,7 @@ chatClient done endpoint serverAddr = do
3840 close (conns Map. ! addr)
3941 return (Map. delete addr conns)
4042 showNumPeers cOut
41-
42-
43+ _ -> pure () -- DO nothing for unrecognised events
4344
4445{-
4546 chatState <- newMVar (Map.fromList peerConns)
@@ -67,7 +68,7 @@ chatClient done endpoint serverAddr = do
6768 let go = do
6869 msg <- BSC. getLine
6970 unless (BS. null msg) $ do
70- readMVar cOut >>= \ conns -> forM (Map. elems conns) $ \ conn -> send conn [msg]
71+ _ <- readMVar cOut >>= \ conns -> forM (Map. elems conns) $ \ conn -> send conn [msg]
7172 go
7273 go
7374 putMVar done ()
@@ -83,7 +84,7 @@ chatClient done endpoint serverAddr = do
8384 connectToPeers :: [EndPointAddress ] -> IO (MVar (Map EndPointAddress Connection ))
8485 connectToPeers addrs = do
8586 conns <- forM addrs $ \ addr -> do
86- Right conn <- connect endpoint addr ReliableOrdered
87+ Right conn <- connect endpoint addr ReliableOrdered defaultConnectHints
8788 return (addr, conn)
8889 newMVar (Map. fromList conns)
8990
@@ -97,11 +98,11 @@ chatClient done endpoint serverAddr = do
9798main :: IO ()
9899main = do
99100 host: port: server: _ <- getArgs
100- Right transport <- createTransport host port
101+ Right transport <- createTransport (defaultTCPAddr host port) defaultTCPParameters
101102 Right endpoint <- newEndPoint transport
102103 clientDone <- newEmptyMVar
103104
104- forkIO $ chatClient clientDone endpoint (EndPointAddress . BSC. pack $ server)
105+ _ <- forkIO $ chatClient clientDone endpoint (EndPointAddress . BSC. pack $ server)
105106
106107 takeMVar clientDone
107108
0 commit comments