@@ -104,7 +104,7 @@ import Data.Foldable (forM_)
104import Data.Typeable (Typeable)
104import Data.Typeable (Typeable)
105import Control.Applicative ((<$>))
105import Control.Applicative ((<$>))
106import Control.Exception (throw)
106import Control.Exception (throw)
107−import Control.Monad (forever, forM, replicateM, when, replicateM_)
107+import Control.Monad (forever, replicateM, replicateM_)
108import Control.Monad.IO.Class (liftIO)
108import Control.Monad.IO.Class (liftIO)
109import Control.Concurrent (forkIO, threadDelay, ThreadId)
109import Control.Concurrent (forkIO, threadDelay, ThreadId)
110import Control.Concurrent.MVar (MVar, newMVar, readMVar, modifyMVar_)
110import Control.Concurrent.MVar (MVar, newMVar, readMVar, modifyMVar_)
@@ -116,17 +116,13 @@ import Control.Distributed.Process
116 , WhereIsReply(..)
116 , WhereIsReply(..)
117 , whereis
117 , whereis
118 , whereisRemoteAsync
118 , whereisRemoteAsync
119− , registerRemoteAsync
120− , reregisterRemoteAsync
121 , getSelfPid
119 , getSelfPid
122 , register
120 , register
123 , reregister
121 , reregister
125 , nsendRemote
123 , nsendRemote
126 , receiveWait
124 , receiveWait
130 , processNodeId
126 , processNodeId
131 , monitorNode
127 , monitorNode
132 , monitor
128 , monitor
@@ -138,7 +134,6 @@ import Control.Distributed.Process
138 , receiveChan
134 , receiveChan
140 , SendPort
136 , SendPort
142 , bracket
137 , bracket
@@ -180,21 +175,21 @@ data BackendState = BackendState {
180initializeBackend :: N.HostName -> N.ServiceName -> RemoteTable -> IO Backend
175initializeBackend :: N.HostName -> N.ServiceName -> RemoteTable -> IO Backend
181initializeBackend host port rtable = do
176initializeBackend host port rtable = do
182 mTransport <- NT.createTransport host port NT.defaultTCPParameters
177 mTransport <- NT.createTransport host port NT.defaultTCPParameters
183− (recv, send) <- initMulticast "224.0.0.99" 9999 1024
178+ (recv, sendp) <- initMulticast "224.0.0.99" 9999 1024
184 (_, backendState) <- fixIO $ \ ~(tid, _) -> do
179 (_, backendState) <- fixIO $ \ ~(tid, _) -> do
185 backendState <- newMVar BackendState
180 backendState <- newMVar BackendState
186 { _localNodes = []
181 { _localNodes = []
187 , _peers = Set.empty
182 , _peers = Set.empty
188 , discoveryDaemon = tid
183 , discoveryDaemon = tid
190− tid' <- forkIO $ peerDiscoveryDaemon backendState recv send
185+ tid' <- forkIO $ peerDiscoveryDaemon backendState recv sendp
191 return (tid', backendState)
186 return (tid', backendState)
192 case mTransport of
187 case mTransport of
193 Left err -> throw err
188 Left err -> throw err
194 Right transport ->
189 Right transport ->
195 let backend = Backend {
190 let backend = Backend {
196 newLocalNode = apiNewLocalNode transport rtable backendState
191 newLocalNode = apiNewLocalNode transport rtable backendState
197− , findPeers = apiFindPeers send backendState
192+ , findPeers = apiFindPeers sendp backendState
198 , redirectLogsHere = apiRedirectLogsHere backend
193 , redirectLogsHere = apiRedirectLogsHere backend
200 in return backend
195 in return backend
@@ -214,8 +209,8 @@ apiFindPeers :: (PeerDiscoveryMsg -> IO ())
214 -> MVar BackendState
209 -> MVar BackendState
216 -> IO [NodeId]
211 -> IO [NodeId]
217−apiFindPeers send backendState delay = do
212+apiFindPeers sendfn backendState delay = do
218− send PeerDiscoveryRequest
213+ sendfn PeerDiscoveryRequest
219 threadDelay delay
214 threadDelay delay
220 Set.toList . (^. peers) <$> readMVar backendState
215 Set.toList . (^. peers) <$> readMVar backendState
@@ -238,14 +233,14 @@ peerDiscoveryDaemon :: MVar BackendState
238 -> IO (PeerDiscoveryMsg, N.SockAddr)
233 -> IO (PeerDiscoveryMsg, N.SockAddr)
239 -> (PeerDiscoveryMsg -> IO ())
234 -> (PeerDiscoveryMsg -> IO ())
241−peerDiscoveryDaemon backendState recv send = forever go
236+peerDiscoveryDaemon backendState recv sendfn = forever go
244 (msg, _) <- recv
239 (msg, _) <- recv
245 case msg of
240 case msg of
246 PeerDiscoveryRequest -> do
241 PeerDiscoveryRequest -> do
247 nodes <- (^. localNodes) <$> readMVar backendState
242 nodes <- (^. localNodes) <$> readMVar backendState
248− forM_ nodes $ send . PeerDiscoveryReply . Node.localNodeId
243+ forM_ nodes $ sendfn . PeerDiscoveryReply . Node.localNodeId
249 PeerDiscoveryReply nid ->
244 PeerDiscoveryReply nid ->
250 modifyMVar_ backendState $ return . (peers ^: Set.insert nid)
245 modifyMVar_ backendState $ return . (peers ^: Set.insert nid)
@@ -272,8 +267,8 @@ apiRedirectLogsHere _backend slavecontrollers = do
272 -- Wait for the replies
267 -- Wait for the replies
273 replicateM_ (length slavecontrollers) $ do
268 replicateM_ (length slavecontrollers) $ do
274 receiveWait
269 receiveWait
275− [ match (\(RedirectLogsReply from ok) -> return ())
270+ [ match (\(RedirectLogsReply {}) -> return ())
276− , match (\m@(NodeMonitorNotification {}) -> return ())
271+ , match (\(NodeMonitorNotification {}) -> return ())
279--------------------------------------------------------------------------------
274--------------------------------------------------------------------------------
@@ -335,8 +330,8 @@ slaveController = do
335 ok <- case (r :: Either ProcessRegistrationException ()) of
330 ok <- case (r :: Either ProcessRegistrationException ()) of
336 Right _ -> return True
331 Right _ -> return True
337 Left _ -> do
332 Left _ -> do
338− r <- try (register "logger" loggerPid)
333+ s <- try (register "logger" loggerPid)
339− case (r :: Either ProcessRegistrationException ()) of
334+ case (s :: Either ProcessRegistrationException ()) of
340 Right _ -> return True
335 Right _ -> return True
341 Left _ -> return False
336 Left _ -> return False
342 pid <- getSelfPid
337 pid <- getSelfPid
@@ -359,7 +354,7 @@ findSlaves backend = do
359 $ \_ -> do
354 $ \_ -> do
361 -- fire off whereis requests
356 -- fire off whereis requests
362− forM nodes $ \nid -> whereisRemoteAsync nid "slaveController"
357+ forM_ nodes $ \nid -> whereisRemoteAsync nid "slaveController"
364 -- Wait for the replies
359 -- Wait for the replies
365 catMaybes <$> replicateM (length nodes) (
360 catMaybes <$> replicateM (length nodes) (