module Control.Concurrent.Timer.Types
( Timer(..)
) where

------------------------------------------------------------------------------
import           Control.Concurrent         (ThreadId)
import           Control.Concurrent.MVar    (MVar)
import           Control.Concurrent.Suspend (Delay)
------------------------------------------------------------------------------

------------------------------------------------------------------------------
-- | The data type representing the timer.
-- For now, the action and delay are fixed for the lifetime of the Timer.
data Timer m = Timer
    { timerAction   :: m ()
    , timerDelay    :: Delay
    , timerThreadID :: MVar (Maybe ThreadId)
    }