Control-event

From HaskellWiki
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.

See Also

  • poorly written blog entries [3][4].