async-timer-0.1.4.0: Provides API for timer based execution of IO actions

Control.Concurrent.Async.Timer

Synopsis

# Documentation

data Timer Source #

This is the type of timer handle, which will be provided to the IO action to be executed within withAsyncTimer. The user can use timerWait on this timer to delay execution until the next timer synchronization event.

defaultTimerConf :: TimerConf Source #

Default timer configuration specifies no initial delay and an interval delay of 1s.

timerConfSetInitDelay :: Int -> TimerConf -> TimerConf Source #

Set the initial delay in the provided timer configuration.

timerConfSetInterval :: Int -> TimerConf -> TimerConf Source #

Set the interval delay in the provided timer configuration.

withAsyncTimer :: (MonadBaseControl IO m, MonadMask m, Forall (Pure m)) => TimerConf -> (Timer -> m b) -> m b Source #

Spawn a timer thread based on the provided timer configuration and then run the provided IO action, which receives the new timer as an argument and call timerWait on it for synchronization. When the provided IO action has terminated, the timer thread will be terminated also.

This functions requires the contraint Forall (Pure m), which means that the monad m needs to satisfy StM m a ~ a for all a.

timerWait :: MonadBaseControl IO m => Timer -> m () Source #

Wait for the next synchronization event on the givem timer.