git.iko.soy/distributed-process
on master help sign in
fixup! Implement MonadCatch, MonadThrow, MonadMask for Process.
commit9b4a059278e04c42db254e94d327fed0a1368a6c authorAlexander Vershilov <alexander.vershilov@tweag.io> dateWed 2 Dec 2015, 07:58 (11 years ago) parentca136cb
1 file changed+10
src/Control/Distributed/Process/Internal/Types.hs+10
src/Control/Distributed/Process/Internal/Types.hs+10
@@ -377,6 +377,16 @@ instance MonadMask Process where
377377 liftRestore restoreIO = \p2 -> do
378378 ourLocalProc <- ask
379379 liftIO $ restoreIO $ runLocalProcess ourLocalProc p2
380+ uninterruptibleMask p = do
381+ lproc <- ask
382+ liftIO $ uninterruptibleMask $ \restore ->
383+ runLocalProcess lproc (p (liftRestore restore))
384+ where
385+ liftRestore :: (forall a. IO a -> IO a)
386+ -> (forall a. Process a -> Process a)
387+ liftRestore restoreIO = \p2 -> do
388+ ourLocalProc <- ask
389+ liftIO $ restoreIO $ runLocalProcess ourLocalProc p2
380390
381391
382392