-- | MonadIO lifted forms of Sound.Osc.Time.Thread functions
module Sound.Osc.Time.Thread.MonadIO where

import Control.Monad.IO.Class {- base >= 4.9 -}

import qualified Sound.Osc.Time as Time {- hosc -}
import qualified Sound.Osc.Time.Thread as Time.Thread {- hosc -}

time :: MonadIO m => m Time.NtpReal
time :: forall (m :: * -> *). MonadIO m => m NtpReal
time = IO NtpReal -> m NtpReal
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO NtpReal
Time.currentTime

pauseThread :: (MonadIO m, RealFrac n) => n -> m ()
pauseThread :: forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
pauseThread = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. n -> IO ()
forall n. RealFrac n => n -> IO ()
Time.Thread.pauseThreadFor

wait :: MonadIO m => Double -> m ()
wait :: forall (m :: * -> *). MonadIO m => NtpReal -> m ()
wait = NtpReal -> m ()
forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
pauseThread

pauseThreadUntil :: (MonadIO m, RealFrac n) => n -> m ()
pauseThreadUntil :: forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
pauseThreadUntil = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. n -> IO ()
forall n. RealFrac n => n -> IO ()
Time.Thread.pauseThreadUntilTime

sleepThread :: (RealFrac n, MonadIO m) => n -> m ()
sleepThread :: forall n (m :: * -> *). (RealFrac n, MonadIO m) => n -> m ()
sleepThread = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. n -> IO ()
forall n. RealFrac n => n -> IO ()
Time.Thread.sleepThreadFor

sleepThreadUntil :: (RealFrac n, MonadIO m) => n -> m ()
sleepThreadUntil :: forall n (m :: * -> *). (RealFrac n, MonadIO m) => n -> m ()
sleepThreadUntil = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. n -> IO ()
forall n. RealFrac n => n -> IO ()
Time.Thread.sleepThreadUntilTime