yesod-worker-0.1.0.0: src/Yesod/Worker/Util.hs
{-# LANGUAGE RecordWildCards #-}
module Yesod.Worker.Util
( enqueue
, enqueueAt
, enqueueIn
) where
import qualified Keenser as K
import Yesod
import Yesod.Worker.Types
import Control.Concurrent (readMVar)
import Data.Thyme.Clock (UTCTime)
enqueue :: (ToJSON a, YesodWorker master) => K.Worker (HandlerT master IO) a -> a -> HandlerT master IO ()
enqueue job args = do
manager <- getManager
K.enqueue manager job args
enqueueAt :: (ToJSON a, YesodWorker master) => UTCTime -> K.Worker (HandlerT master IO) a -> a -> HandlerT master IO ()
enqueueAt time job args = do
manager <- getManager
K.enqueueAt time manager job args
enqueueIn :: (ToJSON a, YesodWorker master) => Rational -> K.Worker (HandlerT master IO) a -> a -> HandlerT master IO ()
enqueueIn snds job args = do
manager <- getManager
K.enqueueIn snds manager job args
getManager :: YesodWorker master => HandlerT master IO K.Manager
getManager = do
Workers{..} <- workers <$> getYesod
liftIO $ do
m <- readMVar wManager
return $! m