-- Copyright (c) Gree, Inc. 2014 -- License: MIT-style {-# LANGUAGE OverloadedStrings #-} 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 ()