module Network.JobQueue.AuxClass where
import Control.Monad.Logger
import Control.Applicative
import System.Log.FastLogger
import System.Log.Logger
import System.Environment (getProgName)
import Network.JobQueue.Types
import Network.JobQueue.Job.Internal
import qualified Data.ByteString.Char8 as S8
class Aux a where
auxLogger :: a -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
auxLogger _ loc logsrc loglevel msg = do
progName <- getProgName
logFunc loglevel progName $ S8.unpack $ fromLogStr $ defaultLogStr loc logsrc loglevel msg
where
logFunc level = case level of
LevelDebug -> debugM
LevelInfo -> infoM
LevelWarn -> warningM
LevelError -> errorM
LevelOther "notice" -> noticeM
LevelOther "critical" -> criticalM
LevelOther _ -> warningM
auxHandleFailure :: (Unit b) => a -> Maybe (Job b) -> IO (Maybe (Job b))
auxHandleFailure _ mjob = do
case mjob of
Just job -> Just <$> createJob Runnable (getRecovery (jobUnit job))
Nothing -> return (Nothing)
auxHandleAfterExecute :: (Unit b) => a -> Job b -> IO ()
auxHandleAfterExecute _ _job = return ()