summaryrefslogtreecommitdiff
path: root/HsbotMaster/Hsbot/Message.hs
diff options
context:
space:
mode:
authorJulien Dessaux2010-07-03 21:26:00 +0200
committerJulien Dessaux2010-07-03 22:40:17 +0200
commit11c2c16835b3e8368be77ccc5b7ddf949021eccd (patch)
tree7733132ee370335156219ff6eb4f0ef2dbd1c8ff /HsbotMaster/Hsbot/Message.hs
parentWrote most of the resume code for the core and the irc plugin. (diff)
downloadhsbot-11c2c16835b3e8368be77ccc5b7ddf949021eccd.tar.gz
hsbot-11c2c16835b3e8368be77ccc5b7ddf949021eccd.tar.bz2
hsbot-11c2c16835b3e8368be77ccc5b7ddf949021eccd.zip
Moved files around as a preliminary for architectural changes.
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
+