auto-update-0.1.6: Efficiently run periodic, on-demand actions

Safe HaskellSafe
LanguageHaskell2010

Control.Debounce.Internal

Description

Unstable API which exposes internals for testing.

Synopsis

Documentation

data DebounceSettings Source #

Settings to control how debouncing should work.

This should be constructed using defaultDebounceSettings and record update syntax, e.g.:

let settings = defaultDebounceSettings { debounceAction = flushLog }

Since: 0.1.2

Constructors

DebounceSettings 

Fields

  • debounceFreq :: Int

    Length of the debounce timeout period in microseconds.

    Default: 1 second (1000000)

    Since: 0.1.2

  • debounceAction :: IO ()

    Action to be performed.

    Note: all exceptions thrown by this action will be silently discarded.

    Default: does nothing.

    Since: 0.1.2

  • debounceEdge :: DebounceEdge

    Whether to perform the action on the leading edge or trailing edge of the timeout.

    Default: trailingEdge.

    Since: 0.1.6

data DebounceEdge Source #

Setting to control whether the action happens at the leading and/or trailing edge of the timeout.

Since: 0.1.6

Constructors

Leading

Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period.

Trailing

Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect.

leadingEdge :: DebounceEdge Source #

Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period.

Since: 0.1.6

trailingEdge :: DebounceEdge Source #

Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect.

Since: 0.1.6

mkDebounceInternal :: MVar () -> (Int -> IO ()) -> DebounceSettings -> IO (IO ()) Source #