control-event- Event scheduling system.



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 Source

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).

noEvent :: EventIdSource

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.