@@ -20,10 +20,6 @@ module Control.Distributed.Process.Node
21-- TODO: Calls to 'sendBinary' and co (by the NC) may stall the node controller.
21-- TODO: Calls to 'sendBinary' and co (by the NC) may stall the node controller.
23−#if ! MIN_VERSION_base(4,6,0)
24−import Prelude hiding (catch)
27import System.IO (fixIO, hPutStrLn, stderr)
23import System.IO (fixIO, hPutStrLn, stderr)
28import System.Mem.Weak (Weak, deRefWeak)
24import System.Mem.Weak (Weak, deRefWeak)
29import qualified Data.ByteString.Lazy as BSL (fromChunks)
25import qualified Data.ByteString.Lazy as BSL (fromChunks)
@@ -52,7 +48,7 @@ import Data.Foldable (forM_)
52import Data.Maybe (isJust, fromJust, isNothing, catMaybes)
48import Data.Maybe (isJust, fromJust, isNothing, catMaybes)
53import Data.Typeable (Typeable)
49import Data.Typeable (Typeable)
54import Control.Category ((>>>))
50import Control.Category ((>>>))
55−import Control.Applicative (Applicative, (<$>))
51+import Control.Applicative
56import Control.Monad (void, when, join)
52import Control.Monad (void, when, join)
57import Control.Monad.IO.Class (MonadIO, liftIO)
53import Control.Monad.IO.Class (MonadIO, liftIO)
58import Control.Monad.State.Strict (MonadState, StateT, evalStateT, gets)
54import Control.Monad.State.Strict (MonadState, StateT, evalStateT, gets)
@@ -60,7 +56,6 @@ import qualified Control.Monad.State.Strict as StateT (get, put)
60import Control.Monad.Reader (MonadReader, ReaderT, runReaderT, ask)
56import Control.Monad.Reader (MonadReader, ReaderT, runReaderT, ask)
61import Control.Exception
57import Control.Exception
63− , AsyncException(ThreadKilled)
64 , SomeException
59 , SomeException
65 , Exception
60 , Exception
@@ -72,12 +67,11 @@ import qualified Control.Exception as Exception
75−import Control.Concurrent (forkIO, forkIOWithUnmask, killThread, myThreadId)
70+import Control.Concurrent (forkIO, forkIOWithUnmask, killThread)
76import Control.Distributed.Process.Internal.StrictMVar
71import Control.Distributed.Process.Internal.StrictMVar
78 , withMVar
73 , withMVar
79 , modifyMVarMasked
74 , modifyMVarMasked
81 , modifyMVar
75 , modifyMVar
82 , newEmptyMVar
76 , newEmptyMVar
@@ -167,12 +161,11 @@ import Control.Distributed.Process.Internal.Types
167 , RegisterReply(..)
161 , RegisterReply(..)
168 , WhereIsReply(..)
162 , WhereIsReply(..)
169 , payloadToMessage
163 , payloadToMessage
171 , createUnencodedMessage
164 , createUnencodedMessage
172 , unsafeCreateUnencodedMessage
165 , unsafeCreateUnencodedMessage
173 , runLocalProcess
166 , runLocalProcess
174 , firstNonReservedProcessId
167 , firstNonReservedProcessId
175− , ImplicitReconnect(WithImplicitReconnect,NoImplicitReconnect)
168+ , ImplicitReconnect(WithImplicitReconnect)
177import Control.Distributed.Process.Management.Internal.Agent
170import Control.Distributed.Process.Management.Internal.Agent
178 ( mxAgentController
171 ( mxAgentController
@@ -199,7 +192,6 @@ import Control.Distributed.Process.Management.Internal.Types
199import Control.Distributed.Process.Serializable (Serializable)
192import Control.Distributed.Process.Serializable (Serializable)
200import Control.Distributed.Process.Internal.Messaging
193import Control.Distributed.Process.Internal.Messaging
201 ( sendBinary
194 ( sendBinary
203 , closeImplicitReconnections
195 , closeImplicitReconnections
204 , impliesDeathOf
196 , impliesDeathOf
@@ -208,7 +200,6 @@ import Control.Distributed.Process.Internal.Primitives
208 , receiveWait
200 , receiveWait
210 , sendChan
202 , sendChan
212 , unwrapMessage
203 , unwrapMessage
214import Control.Distributed.Process.Internal.Types (SendPort, Tracer(..))
205import Control.Distributed.Process.Internal.Types (SendPort, Tracer(..))
@@ -218,7 +209,9 @@ import qualified Control.Distributed.Process.Internal.StrictContainerAccessors a
218 ( mapMaybe
209 ( mapMaybe
219 , mapDefault
210 , mapDefault
212+import Control.Monad.Catch (try)
221import Unsafe.Coerce
213import Unsafe.Coerce
223--------------------------------------------------------------------------------
216--------------------------------------------------------------------------------
224-- Initialization --
217-- Initialization --
@@ -314,8 +307,6 @@ startServiceProcesses node = do
314 -- process which uses 'send' or other primitives which are traced.
307 -- process which uses 'send' or other primitives which are traced.
315 register "trace.logger" logger
308 register "trace.logger" logger
317− fork = forkProcess node
319 loop = do
310 loop = do
320 receiveWait
311 receiveWait
321 [ match $ \((time, pid, string) ::(String, ProcessId, String)) -> do
312 [ match $ \((time, pid, string) ::(String, ProcessId, String)) -> do