@@ -25,7 +25,7 @@ type ChanId = Int
2525-- ./DemoTCP 127.0.0.1 8082
2626--
2727-- Once the connection is established, the slaves will provide the master
28−-- with their SendAddr. The master then decodes this, and sends a message
28+-- with their SourceAddr. The master then decodes this, and sends a message
2929-- back. After processing this message, the slaves respond to the master,
3030-- which then outputs some data.
3131main :: IO ()
@@ -34,71 +34,71 @@ main = do
3434 case args of
3535 -- Master:
3636 -- The master only provides the host, service, and slaves to expect.
37− [host, service, sendAddrFilePath, number] -> do
37+ [host, service, sourceAddrFilePath, number] -> do
3838 let numSlaves = read number
3939 transport <- mkTransport $ TCPConfig defaultHints host service
40− (clientSendEnds, masterReceiveEnd) <- demoMaster transport sendAddrFilePath numSlaves
40+ (clientSourceEnds, masterTargetEnd) <- demoMaster transport sourceAddrFilePath numSlaves
4141 zipWithM_
42− (\clientSendEnd clientId -> send clientSendEnd [BS.pack . show $ clientId])
43− clientSendEnds [0 .. numSlaves-1]
42+ (\clientSourceEnd clientId -> send clientSourceEnd [BS.pack . show $ clientId])
43+ clientSourceEnds [0 .. numSlaves-1]
4444 replicateM_ numSlaves $ do
45− [clientMessage] <- receive masterReceiveEnd
45+ [clientMessage] <- receive masterTargetEnd
4646 print clientMessage
4747
4848 -- Slave:
4949 -- Each slave provides its own host and service, as well as details of
5050 -- the master it wishes to connect to.
51− [host, service, sendAddrFilePath] -> do
51+ [host, service, sourceAddrFilePath] -> do
5252 transport <- mkTransport $ TCPConfig defaultHints host service
53− (masterSendEnd, slaveReceiveEnd) <- demoSlave transport sendAddrFilePath
54− [clientId] <- receive slaveReceiveEnd
53+ (masterSourceEnd, slaveTargetEnd) <- demoSlave transport sourceAddrFilePath
54+ [clientId] <- receive slaveTargetEnd
5555 putStrLn $ "slave: received clientId: " ++ show clientId
5656 let message = "Connected to slave: " ++ BS.unpack clientId
5757
58− send masterSendEnd [BS.pack message]
58+ send masterSourceEnd [BS.pack message]
5959 putStrLn "slave: sent message to master"
6060
6161 _ -> error "Unexpected arguments"
6262
6363demoMaster :: Transport -- ^ Transport
64− -> FilePath -- ^ File to write SendAddr
64+ -> FilePath -- ^ File to write SourceAddr
6565 -> Int -- ^ Number of slaves to expect
66− -> IO ([SendEnd], ReceiveEnd)
67−demoMaster transport sendAddrFilePath numSlaves = do
66+ -> IO ([SourceEnd], TargetEnd)
67+demoMaster transport sourceAddrFilePath numSlaves = do
6868 -- Establish an initial transport
69− (sendAddr, receiveEnd) <- newConnection transport
69+ (sourceAddr, targetEnd) <- newConnection transport
7070
71− -- Write a file containing the sendAddr
72− putStrLn $ "master: writing sendAddr file:" ++ (show . serialize $ sendAddr)
73− BS.writeFile sendAddrFilePath $ serialize sendAddr
71+ -- Write a file containing the sourceAddr
72+ putStrLn $ "master: writing sourceAddr file:" ++ (show . serialize $ sourceAddr)
73+ BS.writeFile sourceAddrFilePath $ serialize sourceAddr
7474
75− -- Deserialize each of the sendEnds received by the slaves
76− sendEnds <- replicateM numSlaves $ do
77− [bytes] <- receive receiveEnd
75+ -- Deserialize each of the sourceEnds received by the slaves
76+ sourceEnds <- replicateM numSlaves $ do
77+ [bytes] <- receive targetEnd
7878 putStrLn "master: received connection."
7979 case deserialize transport bytes of
8080 Nothing -> fail "Garbage message from slave!"
81− Just sendAddr -> connect sendAddr
82− return (sendEnds, receiveEnd)
81+ Just sourceAddr -> connect sourceAddr
82+ return (sourceEnds, targetEnd)
8383
8484demoSlave :: Transport -- ^ Transport
85− -> FilePath -- ^ File to read SendAddr
86− -> IO (SendEnd, ReceiveEnd)
87−demoSlave transport masterSendAddrFilePath = do
85+ -> FilePath -- ^ File to read SourceAddr
86+ -> IO (SourceEnd, TargetEnd)
87+demoSlave transport masterSourceAddrFilePath = do
8888 -- Create a new connection on the transport
89− (sendAddr, receiveEnd) <- newConnection transport
89+ (sourceAddr, targetEnd) <- newConnection transport
9090
9191 -- Establish connection with the master
92− bytes <- BS.readFile masterSendAddrFilePath
92+ bytes <- BS.readFile masterSourceAddrFilePath
9393 case deserialize transport bytes of
94− Just masterSendAddr -> do
95− putStrLn $ "slave: connecting to sendAddr: " ++ (show . serialize $ masterSendAddr)
96− masterSendEnd <- connect masterSendAddr
94+ Just masterSourceAddr -> do
95+ putStrLn $ "slave: connecting to sourceAddr: " ++ (show . serialize $ masterSourceAddr)
96+ masterSourceEnd <- connect masterSourceAddr
9797
98− -- Send the serialized address of this slave
99− send masterSendEnd [serialize sendAddr]
100− putStrLn "slave: sent sendAddr"
101− return (masterSendEnd, receiveEnd)
98+ -- Source the serialized address of this slave
99+ send masterSourceEnd [serialize sourceAddr]
100+ putStrLn "slave: sent sourceAddr"
101+ return (masterSourceEnd, targetEnd)
102102
103− Nothing -> error "slave: Unable to deserialize master SendAddr!"
103+ Nothing -> error "slave: Unable to deserialize master SourceAddr!"
104104