module Holumbus.MapReduce.DaemonInterface
(
runDaemon
)
where
import Data.Maybe
import Holumbus.Common.Utils ( handleAll )
import Holumbus.Common.FileHandling
import qualified Holumbus.Common.Debug as DEBUG
import qualified Holumbus.Console.ServerConsole as Console
import qualified Holumbus.MapReduce.MapReduce as MR
import qualified Holumbus.MapReduce.Types as T
runDaemon :: (MR.MapReduce mr) => mr -> String -> Int -> String -> IO ()
runDaemon mr version port prompt
= do
Console.startServerConsole (createConsole version) mr port prompt
createConsole :: (MR.MapReduce mr) => String -> Console.ConsoleData mr
createConsole version =
Console.addConsoleCommand "site" getMySiteId "" $
Console.addConsoleCommand "mrtype" getMapReduceType "" $
Console.addConsoleCommand "startC" startControlling "" $
Console.addConsoleCommand "stopC" stopControlling "" $
Console.addConsoleCommand "isC" isControlling "" $
Console.addConsoleCommand "step" doSingleStep "" $
Console.addConsoleCommand "mrJob" doMapReduceJob "" $
Console.addConsoleCommand "parse" parseJob "" $
Console.addConsoleCommand "debug" printDebug "" $
Console.addConsoleCommand "version" (printVersion version) "prints the version" $
Console.initializeConsole
getMySiteId :: (MR.MapReduce mr) => mr -> [String] -> IO String
getMySiteId mr _
= handleAll (\e -> return . show $ e) $
do
s <- MR.getMySiteId mr
return . show $ s
getMapReduceType :: (MR.MapReduce mr) => mr -> [String] -> IO String
getMapReduceType mr _
= handleAll (\e -> return . show $ e) $
do
t <- MR.getMapReduceType mr
return . show $ t
startControlling :: (MR.MapReduce mr) => mr -> [String] -> IO String
startControlling mr _
= handleAll (\e -> return . show $ e) $
do
MR.startControlling mr
return "OK"
stopControlling :: (MR.MapReduce mr) => mr -> [String] -> IO String
stopControlling mr _
= handleAll (\e -> return . show $ e) $
do
MR.stopControlling mr
return "OK"
isControlling :: (MR.MapReduce mr) => mr -> [String] -> IO String
isControlling mr _
= handleAll (\e -> return . show $ e) $
do
b <- MR.isControlling mr
return . show $ b
doSingleStep :: (MR.MapReduce mr) => mr -> [String] -> IO String
doSingleStep mr _
= handleAll (\e -> return . show $ e) $
do
MR.doSingleStep mr
return "OK"
doMapReduceJob :: (MR.MapReduce mr) => mr -> [String] -> IO String
doMapReduceJob mr opts
= do
handleAll (\e -> return . show $ e) $
do
(mbName,_) <- Console.nextOption opts
jobInfo <- (loadFromXmlFile (fromJust mbName))::IO T.JobInfo
r <- MR.doMapReduceJob jobInfo mr
return . (++"RESULT:\n") . show $ r
parseJob :: (MR.MapReduce mr) => mr -> [String] -> IO String
parseJob _ opts
= do
handleAll (\e -> return . show $ e) $
do
(mbName,_) <- Console.nextOption opts
jobInfo <- (loadFromXmlFile (fromJust mbName))::IO T.JobInfo
return . show $ jobInfo
printDebug :: (MR.MapReduce mr) => mr -> [String] -> IO String
printDebug mr _
= do
handleAll (\e -> return . show $ e) $ DEBUG.getDebug mr
printVersion :: (MR.MapReduce mr) => String -> mr -> [String] -> IO String
printVersion version _ _
= return version