@@ -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
@@ -195,7 +188,6 @@ import Control.Distributed.Process.Management.Internal.Types
195import Control.Distributed.Process.Serializable (Serializable)
188import Control.Distributed.Process.Serializable (Serializable)
196import Control.Distributed.Process.Internal.Messaging
189import Control.Distributed.Process.Internal.Messaging
197 ( sendBinary
190 ( sendBinary
199 , closeImplicitReconnections
191 , closeImplicitReconnections
200 , impliesDeathOf
192 , impliesDeathOf
@@ -204,7 +196,6 @@ import Control.Distributed.Process.Internal.Primitives
204 , receiveWait
196 , receiveWait
206 , sendChan
198 , sendChan
208 , unwrapMessage
199 , unwrapMessage
210import Control.Distributed.Process.Internal.Types (SendPort, Tracer(..))
201import Control.Distributed.Process.Internal.Types (SendPort, Tracer(..))
@@ -214,7 +205,9 @@ import qualified Control.Distributed.Process.Internal.StrictContainerAccessors a
214 ( mapMaybe
205 ( mapMaybe
215 , mapDefault
206 , mapDefault
208+import Control.Monad.Catch (try)
217import Unsafe.Coerce
209import Unsafe.Coerce
219--------------------------------------------------------------------------------
212--------------------------------------------------------------------------------
220-- Initialization --
213-- Initialization --
@@ -308,8 +301,6 @@ startServiceProcesses node = do
308 -- process which uses 'send' or other primitives which are traced.
301 -- process which uses 'send' or other primitives which are traced.
309 register "trace.logger" logger
302 register "trace.logger" logger
311− fork = forkProcess node
313 loop = do
304 loop = do
314 receiveWait
305 receiveWait
315 [ match $ \((time, pid, string) ::(String, ProcessId, String)) -> do
306 [ match $ \((time, pid, string) ::(String, ProcessId, String)) -> do