A timeout manager
Moduletime-manager-0.4.0Haskell2010
System.TimeManager
Timeout manager. Since v0.3.0, timeout manager is a wrapper of
GHC System TimerManager.
Some caveats of using this package:
Only works for GHC
Only works with a threaded runtime
Users of older versions should check the current semantics.
Using 32-bit systems means the max timeout is
maxBound :: Int(2147483647) microseconds, which is less than 36 minutes.Using the same Handle in different threads might cause issues in some edge cases. (i.e. using cancel/pause in one thread, and resume in another)
Synopsis
- newtype Manager
- value defaultManager
- type TimeoutAction
- data Handle
- value emptyHandle
- value initialize
- value stopManager
- value killManager
- value withManager
- value withManager'
- value withHandle
- value withHandleKillThread
- value tickle
- value pause
- value resume
- value cancel
- value register
- value registerKillThread
- data TimeoutThread
- Packagetime-manager-0.4.0
- Exports19
- LanguageHaskell2010
- LicenceMIT
- SourceTimeManager.hs
Types
A manager whose timeout value is 0 (no callbacks are fired).
An action (callback) to be performed on timeout.
A handle used by a timeout manager.
Dummy Handle.
Manager
Creating timeout manager with a timeout value in microseconds.
Setting the timeout to zero or lower (<= 0) will produce a
defaultManager.
WARNING for Windows users: the precision of extending timeouts
is only full "seconds". The provided microseconds will be floored
to the first full second. (i.e. initialize 2_500_000 will get
extended by 2 seconds on a tickle)
This also means timeouts of less than one second will not be extended
when using tickle.
Deprecated. This function does nothing since version 0.3.0
Obsoleted since version 0.3.0
Is now equivalent to pure ().
Deprecated. This function does nothing since version 0.3.0
Obsoleted since version 0.3.0
Is now equivalent to pure ().
Call the inner function with a timeout manager.
Deprecated. This function is the same as withManager since version 0.3.0
Call the inner function with a timeout manager. This is identical to withManager.
Registering a timeout action
Registering a timeout action and unregister its handle when the body action is finished.
Registering a timeout action of killing this thread and unregister its handle when the body action is killed or finished.
Control timeout
Extending the timeout.
To keep frequent callers cheap, the renewal is rate-limited: it is skipped unless at least a quarter of the timeout (capped at one second) has passed since the timeout was last registered or updated.
Careful: this does NOT reactivate an already paused Handle!
WARNING for Windows users: the precision of extending timeouts
is only full "seconds". The provided microseconds will be floored
to the first full second. (i.e. initialize 2_500_000 will get
extended by 2 seconds on a tickle)
This also means timeouts of less than one second will not be extended
when using tickle.
Low level
Registering a timeout action.
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.
Exceptions
The asynchronous exception thrown if a thread is registered via registerKillThread.
Instances2Show, Exception
Show TimeoutThreadDefined in time-manager-0.4.0 · System.TimeManagerException TimeoutThreadDefined in time-manager-0.4.0 · System.TimeManager