packages feed

ribosome-0.3.0.0: lib/Ribosome/System/Time.hs

module Ribosome.System.Time where

import Control.Concurrent (threadDelay)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Data.Time.Clock.POSIX (getPOSIXTime)
import GHC.Float (word2Double)

epochSeconds :: MonadIO m => m Int
epochSeconds = liftIO $ fmap round getPOSIXTime

usleep :: MonadIO m => Double -> m ()
usleep =
  liftIO . threadDelay . round

sleep :: MonadIO m => Double -> m ()
sleep seconds =
  usleep $ seconds * 1e6

sleepW :: MonadIO m => Word -> m ()
sleepW = sleep . word2Double