packages feed

statsdi-0.1.0.0: src/Control/Monad/Stats/Util.hs

module Control.Monad.Stats.Util where

import           Control.Monad.IO.Class
import           Data.Time.Clock.POSIX

getMicrotime :: (MonadIO m) => m Int
getMicrotime = posixToMicros <$> liftIO getPOSIXTime

posixToMicros :: POSIXTime -> Int
posixToMicros = round . (* 1000000.0) . toDouble

getMillitime :: (MonadIO m) => m Int
getMillitime = posixToMillis <$> liftIO getPOSIXTime

posixToMillis :: POSIXTime -> Int
posixToMillis = round . (* 1000.0) . toDouble

toDouble :: (Real n) => n -> Double
toDouble = realToFrac