summaryrefslogtreecommitdiff
path: root/HsbotMaster/Hsbot/Message.hs
diff options
context:
space:
mode:
Diffstat (limited to 'HsbotMaster/Hsbot/Message.hs')
-rw-r--r--HsbotMaster/Hsbot/Message.hs35
1 files changed, 35 insertions, 0 deletions
diff --git a/HsbotMaster/Hsbot/Message.hs b/HsbotMaster/Hsbot/Message.hs
new file mode 100644
index 0000000..933394b
--- /dev/null
+++ b/HsbotMaster/Hsbot/Message.hs
@@ -0,0 +1,35 @@
+module Hsbot.Message
+ ( processInternalMessage
+ , processRebootMessage
+ , processExitMessage
+ ) where
+
+import Control.Monad.State
+import qualified Data.Map as M
+
+import Hsbot.PluginUtils
+import Hsbot.Types
+
+-- | Processes an internal message
+processInternalMessage :: Msg -> Bot (BotStatus)
+processInternalMessage msg
+ | msgTo msg == "CORE" = processCoreMessage msg
+ | otherwise = do
+ plugins <- gets botPlugins
+ case M.lookup (msgTo msg) plugins of
+ Just (plugin, _, _) -> sendToPlugin (IntMsg msg) plugin
+ Nothing -> return ()
+ return BotContinue
+
+processCoreMessage :: Msg -> Bot (BotStatus)
+processCoreMessage msg = do
+ case msgType msg of
+ "REBOOT" -> return BotReboot
+ _ -> return BotContinue
+
+processRebootMessage :: RebootMsg -> Bot (BotStatus)
+processRebootMessage _ = return BotReboot -- TODO : check who is sending that to us
+
+processExitMessage :: ExitMsg -> Bot (BotStatus)
+processExitMessage _ = return BotExit -- TODO : check who is sending that to us
+