Packages

The Phi Programming Language

Current section

Files

Jump to
phi lib System Timer.hm
Raw

lib/System/Timer.hm

-----------------------------------------------------------------------------
-- |
-- Module : System.Timer
-- Copyright : (c) 2020-2021 EMQ Technologies Co., Ltd.
-- License : BSD-style (see the LICENSE file)
--
-- Maintainer : Feng Lee, feng@emqx.io
-- Yang M, yangm@emqx.io
-- Stability : experimental
-- Portability : portable
--
-- The System Timer module.
--
-----------------------------------------------------------------------------
module System.Timer
( TimerRef
, startTimer
, cancelTimer
, sendAfter
, readTimer
) where
import Control.Monad (IO)
import Data.Maybe (Maybe)
import Data.Pid (Pid)
import Data.Ref (Reference)
import Data.Unit (Unit)
import Foreign (ffiIO1, ffiIO3)
type TimerRef = Reference
startTimer :: forall m. Integer -> Pid -> m -> IO TimerRef
startTimer = ffiIO3 :erlang :start_timer
cancelTimer :: TimerRef -> IO ()
cancelTimer = ffiIO1 :erlang :cancel_timer
sendAfter :: forall m. Integer -> Pid -> m -> IO TimerRef
sendAfter = ffiIO3 :erlang :send_after
foreign import readTimer :: TimerRef -> IO (Maybe Integer)