@@ -1,5 +1,6 @@
11module Main where
22
3+import Control.Monad (join)
34import Control.Monad.IO.Class (liftIO)
45import Control.Concurrent (forkIO)
56import Control.Concurrent.MVar (MVar, newEmptyMVar, readMVar, takeMVar, putMVar)
@@ -139,6 +140,19 @@ testCall transport rtable = do
139140
140141 takeMVar clientDone
141142
143+testBind :: Transport -> RemoteTable -> IO ()
144+testBind transport rtable = do
145+ node <- newLocalNode transport rtable
146+ runProcess node $ do
147+ us <- getSelfPid
148+ let fac5 :: Closure (Process Int)
149+ fac5 = $(mkClosure 'factorial) 5
150+ sendVal :: Closure (Int -> Process ())
151+ sendVal = $(mkClosure 'sendInt) us
152+ go :: Closure (Process ())
153+ go = fac5 `bindCP` sendVal
154+ join (unClosure go)
155+
142156main :: IO ()
143157main = do
144158 Right transport <- createTransport "127.0.0.1" "8080" defaultTCPParameters
@@ -149,4 +163,5 @@ main = do
149163 , ("SendProcClosure", testSendProcClosure transport rtable)
150164 , ("Spawn", testSpawn transport rtable)
151165 , ("Call", testCall transport rtable)
166+ , ("Bind", testBind transport rtable)
152167 ]