-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Configure and run recurring jobs indefinitely @package looper @version 0.3.0.2 module Looper -- | A looper definition data LooperDef m LooperDef :: Text -> Bool -> NominalDiffTime -> NominalDiffTime -> m () -> LooperDef m -- | The name of the looper, can be useful for logging [looperDefName] :: LooperDef m -> Text -- | Whether this looper is enabled [looperDefEnabled] :: LooperDef m -> Bool -- | The time between the start of each run [looperDefPeriod] :: LooperDef m -> NominalDiffTime -- | The time before the first run [looperDefPhase] :: LooperDef m -> NominalDiffTime -- | The function to run [looperDefFunc] :: LooperDef m -> m () -- | Construct a NominalDiffTime from a number of milliseconds -- -- Note that scheduling can easily get in the way of accuracy at this -- level of granularity. milliseconds :: Double -> NominalDiffTime -- | Construct a NominalDiffTime from a number of seconds seconds :: Double -> NominalDiffTime -- | Construct a NominalDiffTime from a number of minutes minutes :: Double -> NominalDiffTime -- | Construct a NominalDiffTime from a number of hours hours :: Double -> NominalDiffTime -- | Settings that you might want to pass into a looper using -- mkLooperDef data LooperSettings LooperSettings :: Bool -> NominalDiffTime -> NominalDiffTime -> LooperSettings [looperSetEnabled] :: LooperSettings -> Bool [looperSetPhase] :: LooperSettings -> NominalDiffTime [looperSetPeriod] :: LooperSettings -> NominalDiffTime parseLooperSettings :: String -> NominalDiffTime -> NominalDiffTime -> Parser LooperSettings mkLooperDef :: Text -> LooperSettings -> m () -> LooperDef m -- | Like runLoopers but runs the loopers as background jobs. withLoopers :: MonadUnliftIO m => [LooperDef m] -> m a -> m a -- | Simply run loopers -- --
--   runLoopers = runLoopersIgnoreOverrun looperDefFunc
--   
-- -- see runLoopersIgnoreOverrun -- -- Note that this function will loop forever, you need to wrap it using -- async yourself. runLoopers :: MonadUnliftIO m => [LooperDef m] -> m () -- | Like runLoopersIgnoreOverrun but runs the loopers as background -- jobs. withLoopersIgnoreOverrun :: MonadUnliftIO n => (LooperDef m -> n ()) -> [LooperDef m] -> n a -> n a -- | Run loopers with a custom runner, ignoring any overruns -- --
--   runLoopersIgnoreOverrun = runLoopersRaw (pure ())
--   
-- -- see runLoopersRaw -- -- Note that this function will loop forever, you need to wrap it using -- async yourself. runLoopersIgnoreOverrun :: MonadUnliftIO n => (LooperDef m -> n ()) -> [LooperDef m] -> n () -- | Like runLoopersRaw but runs the loopers as background jobs. withLoopersRaw :: forall m n a. MonadUnliftIO n => (LooperDef m -> n ()) -> (LooperDef m -> n ()) -> [LooperDef m] -> n a -> n a -- | Run loopers, with a custom runner and overrun handler -- -- -- -- Note that this function will loop forever, you need to wrap it using -- async yourself. runLoopersRaw :: MonadUnliftIO n => (LooperDef m -> n ()) -> (LooperDef m -> n ()) -> [LooperDef m] -> n () runLooperDef :: MonadUnliftIO n => (LooperDef m -> n ()) -> (LooperDef m -> n ()) -> LooperDef m -> Maybe (n void) -- | Wait for a given NominalDiffTime -- -- This takes care of the conversion to microseconds to pass to -- threadDelay for you. -- --
--   waitNominalDiffTime ndt = liftIO $ threadDelay $ round (toRational ndt * (1000 * 1000))
--   
waitNominalDiffTime :: MonadIO m => NominalDiffTime -> m () instance GHC.Generics.Generic (Looper.LooperDef m) instance GHC.Generics.Generic Looper.LooperSettings instance GHC.Classes.Eq Looper.LooperSettings instance GHC.Show.Show Looper.LooperSettings