git.iko.soy/distributed-process
on master help sign in
The Pipes transport works for demo1 and demo0.
commitad9c9ccbcc2df94a405ff7ec2114c8dc96b7ad95 authorRyan Newton <rrnewton@gmail.com> dateMon 20 Feb 2012, 02:01 (15 years ago) parent7041cc4
2 files changed+26−15
examples/DemoTransport.hs+23−13 network-transport/src/Network/Transport/Pipes.hs+3−2
examples/DemoTransport.hs+23−13
@@ -60,10 +60,9 @@ demo1 mktrans = do
6060 closeTransport trans
6161
6262-- | Check that messages can be sent before receive is set up.
63−demo2 :: IO ()
64−demo2 = do
65− -- trans <- mkTransport
66− trans <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
63+demo2 :: IO Transport -> IO ()
64+demo2 mktrans = do
65+ trans <- mktrans
6766
6867 (sourceAddr, targetEnd) <- newConnection trans
6968
@@ -77,10 +76,10 @@ demo2 = do
7776 closeTransport trans
7877
7978-- | Check that two different transports can be created.
80−demo3 :: IO ()
81−demo3 = do
82− trans1 <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
83− trans2 <- mkTransport $ TCPConfig undefined "127.0.0.1" "8081"
79+demo3 :: (Int -> IO Transport) -> Int -> IO ()
80+demo3 mktrans offset = do
81+ trans1 <- mktrans (offset + 0)
82+ trans2 <- mktrans (offset + 1)
8483
8584 (sourceAddr1, targetEnd1) <- newConnection trans1
8685 (sourceAddr2, targetEnd2) <- newConnection trans2
@@ -101,6 +100,7 @@ demo3 = do
101100 closeTransport trans1
102101 closeTransport trans2
103102
103+
104104-- | Check that two different connections on the same transport can be created.
105105demo4 :: IO ()
106106demo4 = do
@@ -133,21 +133,31 @@ logServer name targetEnd = forever $ do
133133
134134--------------------------------------------------------------------------------
135135
136−runWAllTranports demo = do
136+runWAllTranports demo offset = do
137137 putStrLn "------------------------------------------------------------"
138138 putStrLn " MVAR transport:"
139139 demo Network.Transport.MVar.mkTransport
140140 putStrLn "\n TCP transport:"
141− demo$ mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
141+ demo$ mkTransport $ TCPConfig undefined "127.0.0.1" (show (8080 + offset))
142142 putStrLn "\n PIPES transport:"
143143 demo Network.Transport.Pipes.mkTransport
144144 putStrLn "\n"
145145
146146main = do
147147 putStrLn "Demo0:"
148− runWAllTranports demo0
148+ runWAllTranports demo0 0
149+
150+ putStrLn "Demo1:"
151+ runWAllTranports demo1 10
152+
153+ putStrLn "Demo2:"
154+ runWAllTranports demo2 20
155+
156+ putStrLn "Done with all demos!"
157+
158+-- trans <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
149159
150−-- putStrLn "Demo1:"
151−-- runWAllTranports demo1
160+-- trans1 <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
161+-- trans2 <- mkTransport $ TCPConfig undefined "127.0.0.1" "8081"
152162
153163
network-transport/src/Network/Transport/Pipes.hs+3−2
@@ -75,9 +75,10 @@ mkTransport = do
7575 -- Note: Linux fifo semantics are NOT to block on open-RW, but this is not Posix standard.
7676 --
7777 -- We may protect from blocking other threads by running on a separate (OS) thread:
78−-- mv <- onOSThread$ PIO.openFd filename PIO.ReadWrite Nothing PIO.defaultFileFlags
78+ mv <- onOSThread$ PIO.openFd filename PIO.ReadWrite Nothing PIO.defaultFileFlags
7979-- fd <- PIO.openFd filename PIO.ReadWrite Nothing PIO.defaultFileFlags
80− fd <- PIO.openFd filename PIO.WriteOnly Nothing PIO.defaultFileFlags
80+-- fd <- PIO.openFd filename PIO.WriteOnly Nothing PIO.defaultFileFlags
81+ fd <- takeMVar mv
8182
8283 return $
8384 -- Write to the named pipe. If the message is less than