This module can execute events at specified time. It uses a two thread system that allows the STM adding and deleting of new threads without requiring later IO actions. For a simpler system that uses relative times see Control.Event.Relative
- data EventId
- data EventSystem
- noEvent :: EventId
- initEventSystem :: IO EventSystem
- addEvent :: EventSystem -> UTCTime -> IO () -> IO EventId
- addEventSTM :: EventSystem -> UTCTime -> IO () -> STM EventId
- cancelEvent :: EventSystem -> EventId -> IO Bool
- cancelEventSTM :: EventSystem -> EventId -> STM Bool
- evtSystemSize :: EventSystem -> STM Int
Documentation
IDs useful for canceling previously scheduled events.
data EventSystem Source
The event system must be initilized using initEventSystem. More than one event system can be instantiated at once (eg. for non-interference).
A value indicating there is no such event. Canceling this event returns True and has no other effect.
initEventSystem :: IO EventSystemSource
The only way to get an event system is to initilize one
addEvent :: EventSystem -> UTCTime -> IO () -> IO EventIdSource
Add an *action* to be performed at *time* by *system*. Returns a unique ID.
addEventSTM :: EventSystem -> UTCTime -> IO () -> STM EventIdSource
Atomic version of addEvent
cancelEvent :: EventSystem -> EventId -> IO BoolSource
Cancel an event from the system, returning True on success.
cancelEventSTM :: EventSystem -> EventId -> STM BoolSource
Atomic version of cancelEvent
evtSystemSize :: EventSystem -> STM IntSource
Returns the number of pending events.