-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Timeout handling -- -- This package provides functions for running timeouts @package control-timeout @version 0.1 -- | This module handles timeouts by using a (single) thread sitting in -- threadDelay and the STM. One can request an IO action be performed -- after some number of seconds and later cancel that request if need be. -- -- The number of threads used is constant. module Control.Timeout -- | Add an action to be performed at some point in the future. The action -- will occur inside a thread which is dedicated to performing them so it -- should run quickly and certainly should not block on IO etc. addTimeout :: Float -> (IO ()) -> IO TimeoutTag -- | Remove a timeout. This function never fails, but will return False if -- the given timeout couldn't be found. This may be because cancelTimeout -- has already been called with this tag, or because the timeout has -- already fired. Note that, since timeouts are IO actions, they don't -- run atomically. Thus it's possible that this call returns False and -- that the timeout is currently in the process of running. -- -- Note that one should never call cancelTimeout twice with the same tag -- since it's possible that the tag will be reused and thus the second -- call could cancel a different timeout. cancelTimeout :: TimeoutTag -> STM Bool -- | This is an opaque type of timeouts. A value of this type is returned -- when creating a timeout and can be used to cancel the same timeout. data TimeoutTag