Control-event
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Introduction
The control-event package provides the capability to schedule and cancel IO () actions for arbitrary absolute times. Source code is available from hackage[1] and the repository[2].
A shim module that provides identical API as control-timeout (relative expiration times) is available, though it is also much less efficient then either control-timeout or control-event with absolute times.
Example Code
Code generally looks like this:
import Control.Monad
import Control.Event
main = do
evtSys <- initEventSystem
...
doStuff action delay race evtSys
doStuff action delay race eS =
(TOD sec ps) <- getClockTime
eid <- addEvent eS (TOD (sec + delay) ps) action
res <- race
when res (cancelEvent eS eid)
runUserOperation a
The test code can serve as a decent example as well.
Potential Future Changes
- While no work is planned, if someone were looking for a quick project then they could move this package over to the 'time' packages and eliminate the 'old-time' dependency.