git.iko.soy/distributed-process
on master help sign in
After merge making sure that TCP transport works for all demos. All demos enabled in this rev, TCP transport only.
commit0c0f40697501cb74abccfc64efabd14d387069d7 authorRyan Newton <rrnewton@gmail.com> dateMon 20 Feb 2012, 09:54 (15 years ago) parentad9c9cc
2 files changed+34−19
examples/DemoTransport.hs+31−19 network-transport/src/Network/Transport/Pipes.hs+3
examples/DemoTransport.hs+31−19
@@ -9,12 +9,13 @@ import Network.Transport.TCP (mkTransport, TCPConfig (..))
99import Control.Concurrent
1010import Control.Monad
1111
12−-- import qualified Data.ByteString.Lazy.Char8 as BS
13−import qualified Data.ByteString.Char8 as BS
12+import qualified Data.ByteString.Lazy.Char8 as BS
13+-- import qualified Data.ByteString.Char8 as BS
1414
15+import Data.IORef
1516import Debug.Trace
1617
17−closeTransport _ = return ()
18+-- closeTransport _ = return ()
1819
1920-------------------------------------------
2021-- Example program using backend directly
@@ -76,10 +77,10 @@ demo2 mktrans = do
7677 closeTransport trans
7778
7879-- | Check that two different transports can be created.
79−demo3 :: (Int -> IO Transport) -> Int -> IO ()
80−demo3 mktrans offset = do
81− trans1 <- mktrans (offset + 0)
82− trans2 <- mktrans (offset + 1)
80+demo3 :: IO Transport -> IO ()
81+demo3 mktrans = do
82+ trans1 <- mktrans
83+ trans2 <- mktrans
8384
8485 (sourceAddr1, targetEnd1) <- newConnection trans1
8586 (sourceAddr2, targetEnd2) <- newConnection trans2
@@ -102,10 +103,9 @@ demo3 mktrans offset = do
102103
103104
104105-- | Check that two different connections on the same transport can be created.
105−demo4 :: IO ()
106−demo4 = do
107− trans <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
108− -- trans <- Network.Transport.MVar.mkTransport
106+demo4 :: IO Transport -> IO ()
107+demo4 mktrans = do
108+ trans <- mktrans
109109
110110 (sourceAddr1, targetEnd1) <- newConnection trans
111111 (sourceAddr2, targetEnd2) <- newConnection trans
@@ -125,22 +125,28 @@ demo4 = do
125125 killThread threadId2
126126 closeTransport trans
127127
128+--------------------------------------------------------------------------------
129+
128130logServer :: String -> TargetEnd -> IO ()
129131logServer name targetEnd = forever $ do
130132 x <- receive targetEnd
131133 trace (name ++ " rcvd: " ++ show x) $ return ()
132134
133135
134−--------------------------------------------------------------------------------
135−
136+runWAllTranports :: (IO Transport -> IO ()) -> Int -> IO ()
136137runWAllTranports demo offset = do
137138 putStrLn "------------------------------------------------------------"
138− putStrLn " MVAR transport:"
139− demo Network.Transport.MVar.mkTransport
140− putStrLn "\n TCP transport:"
141− demo$ mkTransport $ TCPConfig undefined "127.0.0.1" (show (8080 + offset))
142− putStrLn "\n PIPES transport:"
143− demo Network.Transport.Pipes.mkTransport
139+-- putStrLn " MVAR transport:"
140+-- demo Network.Transport.MVar.mkTransport
141+ putStrLn "\n TCP transport:"
142+
143+ cntr <- newIORef 0
144+ demo$ do cnt <- readIORef cntr
145+ writeIORef cntr (cnt+1)
146+ mkTransport (TCPConfig undefined "127.0.0.1" (show (8080 + offset + cnt)))
147+
148+-- putStrLn "\n PIPES transport:"
149+-- demo Network.Transport.Pipes.mkTransport
144150 putStrLn "\n"
145151
146152main = do
@@ -153,6 +159,12 @@ main = do
153159 putStrLn "Demo2:"
154160 runWAllTranports demo2 20
155161
162+ putStrLn "Demo3:"
163+ runWAllTranports demo3 30
164+
165+ putStrLn "Demo4:"
166+ runWAllTranports demo4 40
167+
156168 putStrLn "Done with all demos!"
157169
158170-- trans <- mkTransport $ TCPConfig undefined "127.0.0.1" "8080"
network-transport/src/Network/Transport/Pipes.hs+3
@@ -61,6 +61,9 @@ mkTransport = do
6161 mkTargetEnd filename lock)
6262 , newMulticastWith = error "Pipes.hs: newMulticastWith not implemented yet"
6363 , deserialize = \bs -> return$ mkSourceAddr (BS.unpack bs)
64+ , closeTransport = do
65+-- removeFile filename
66+ return ()
6467 }
6568 where
6669 mkSourceAddr :: String -> SourceAddr