summaryrefslogtreecommitdiff
path: root/Hsbot/Plugin.hs
diff options
context:
space:
mode:
authorJulien Dessaux2011-05-06 19:15:40 +0200
committerJulien Dessaux2011-05-06 19:15:40 +0200
commita8c0c8578718098e7a0482678ab727533ee09862 (patch)
treec9a1d07d47e6089ba1fadacf595fd9dd8039a03e /Hsbot/Plugin.hs
parentAdded a shitload of ducks to recognize and kill! (diff)
downloadhsbot-a8c0c8578718098e7a0482678ab727533ee09862.tar.gz
hsbot-a8c0c8578718098e7a0482678ab727533ee09862.tar.bz2
hsbot-a8c0c8578718098e7a0482678ab727533ee09862.zip
Made the Plugin monad a Reader instead of a State since it can't change.
Diffstat (limited to 'Hsbot/Plugin.hs')
-rw-r--r--Hsbot/Plugin.hs13
1 files changed, 5 insertions, 8 deletions
diff --git a/Hsbot/Plugin.hs b/Hsbot/Plugin.hs
index ebcff8d..6d1eacf 100644
--- a/Hsbot/Plugin.hs
+++ b/Hsbot/Plugin.hs
@@ -23,19 +23,16 @@ loadPlugin pId = do
let name = pluginName pId
loop = pluginEp pId
oldPlugins = botPlugins bot
- pState = PluginState { pluginId = pId
- , pluginChan = chan
- , pluginMaster = master }
+ pEnv = PluginEnv { pluginId = pId
+ , pluginChan = chan
+ , pluginMaster = master }
case M.lookup name oldPlugins of
Just _ -> liftIO . warningM "Hsbot.Core.LoadPlugin" $ "Not loading already loaded plugin : " ++ name
Nothing -> do
liftIO . infoM "Hsbot.Core.LoadPlugin" $ "Loading plugin : " ++ name
env <- lift ask
- finalStateMVar <- liftIO newEmptyMVar
- threadId <- liftIO . forkIO $ runReaderT (execStateT loop pState >>= storeFinalState finalStateMVar) env
- let newPlugins = M.insert name (pState, finalStateMVar, threadId) oldPlugins
+ threadId <- liftIO . forkIO $ runReaderT (runReaderT loop pEnv) env
+ let newPlugins = M.insert name (pEnv, threadId) oldPlugins
put $ bot { botPlugins = newPlugins
, botHooks = chan : botHooks bot }
- storeFinalState :: MVar PluginState -> PluginState -> Env IO ()
- storeFinalState finalStateMVar finalState = liftIO $ putMVar finalStateMVar finalState