time-manager-0.2.0: Scalable timer
Safe HaskellSafe-Inferred
LanguageHaskell2010

System.TimeManager

Synopsis

Types

type Manager = Reaper [Handle] Handle Source #

A timeout manager

type TimeoutAction = IO () Source #

An action to be performed on timeout.

data Handle Source #

A handle used by a timeout manager.

Manager

initialize :: Int -> IO Manager Source #

Creating timeout manager which works every N micro seconds where N is the first argument.

stopManager :: Manager -> IO () Source #

Stopping timeout manager with onTimeout fired.

killManager :: Manager -> IO () Source #

Killing timeout manager immediately without firing onTimeout.

withManager Source #

Arguments

:: Int

timeout in microseconds

-> (Manager -> IO a) 
-> IO a 

Call the inner function with a timeout manager. stopManager is used after that.

withManager' Source #

Arguments

:: Int

timeout in microseconds

-> (Manager -> IO a) 
-> IO a 

Call the inner function with a timeout manager. killManager is used after that.

Registering a timeout action

withHandle :: Manager -> TimeoutAction -> (Handle -> IO a) -> IO (Maybe a) Source #

Registering a timeout action and unregister its handle when the body action is finished. Nothing is returned on timeout.

withHandleKillThread :: Manager -> TimeoutAction -> (Handle -> IO ()) -> IO () Source #

Registering a timeout action of killing this thread and unregister its handle when the body action is killed or finished.

Control timeout

tickle :: Handle -> IO () Source #

Setting the state to active. Manager turns active to inactive repeatedly.

pause :: Handle -> IO () Source #

Setting the state to paused. Manager does not change the value.

resume :: Handle -> IO () Source #

Setting the paused state to active. This is an alias to tickle.

Low level

register :: Manager -> TimeoutAction -> IO Handle Source #

Registering a timeout action.

registerKillThread :: Manager -> TimeoutAction -> IO Handle Source #

Registering a timeout action of killing this thread. TimeoutThread is thrown to the thread which called this function on timeout. Catch TimeoutThread if you don't want to leak the asynchronous exception to GHC RTS.

cancel :: Handle -> IO () Source #

Removing the Handle from the Manager immediately.

Exceptions

data TimeoutThread Source #

The asynchronous exception thrown if a thread is registered via registerKillThread.

Constructors

TimeoutThread