git.iko.soy/distributed-process
on master help sign in
Merge pull request #282 from haskell-distributed/with-monitor-ref
597c674Mathieu Boespflug
src/Control/Distributed/Process.hs+2−2
@@ -102,7 +102,7 @@ module Control.Distributed.Process
102 , monitorPort
102 , monitorPort
103 , unmonitor
103 , unmonitor
104 , withMonitor
104 , withMonitor
105− , withMonitorRef
105+ , withMonitor_
106 , MonitorRef -- opaque
106 , MonitorRef -- opaque
107 , ProcessLinkException(..)
107 , ProcessLinkException(..)
108 , NodeLinkException(..)
108 , NodeLinkException(..)
@@ -270,7 +270,7 @@ import Control.Distributed.Process.Internal.Primitives
270 , monitorPort
270 , monitorPort
271 , unmonitor
271 , unmonitor
272 , withMonitor
272 , withMonitor
273− , withMonitorRef
273+ , withMonitor_
274 -- Logging
274 -- Logging
275 , say
275 , say
276 -- Registry
276 -- Registry
src/Control/Distributed/Process/Internal/Primitives.hs+10−12
@@ -77,7 +77,7 @@ module Control.Distributed.Process.Internal.Primitives
77 , monitor
77 , monitor
78 , unmonitor
78 , unmonitor
79 , withMonitor
79 , withMonitor
80− , withMonitorRef
80+ , withMonitor_
81 -- * Logging
81 -- * Logging
82 , say
82 , say
83 -- * Registry
83 -- * Registry
@@ -887,21 +887,19 @@ monitor = monitor' . ProcessIdentifier
887-- @withMonitor@ returns, there might still be unreceived monitor
887-- @withMonitor@ returns, there might still be unreceived monitor
888-- messages in the queue.
888-- messages in the queue.
889--
889--
890−withMonitor :: ProcessId -> Process a -> Process a
890+withMonitor :: ProcessId -> (MonitorRef -> Process a) -> Process a
891−withMonitor pid = withMonitorRef pid . const
891+withMonitor pid = bracket (monitor pid) unmonitor
892− -- unmonitor blocks waiting for the response, so there's a possibility
893− -- that an exception might interrupt withMonitor before the unmonitor
894− -- has completed. I think that's better than making the unmonitor
895− -- uninterruptible.
896
892
897-- | Establishes temporary monitoring of another process.
893-- | Establishes temporary monitoring of another process.
898--
894--
899−-- @withMonitorRef pid code@ sets up monitoring of @pid@ for the duration
895+-- @withMonitor_ pid code@ sets up monitoring of @pid@ for the duration
900−-- of @code@. Note: although monitoring is no longer active when
896+-- of @code@. Note: although monitoring is no longer active when
901−-- @withMonitorRef@ returns, there might still be unreceived monitor
897+-- @withMonitor_@ returns, there might still be unreceived monitor
902-- messages in the queue.
898-- messages in the queue.
899+--
900+-- Since 0.6.1
903−withMonitorRef :: ProcessId -> (MonitorRef -> Process a) -> Process a
901+withMonitor_ :: ProcessId -> Process a -> Process a
904−withMonitorRef pid code = bracket (monitor pid) unmonitor code
902+withMonitor_ p = withMonitor p . const
905
903
906-- | Remove a link
904-- | Remove a link
907--
905--