diff options
author | Julien Dessaux | 2011-04-13 20:15:55 +0200 |
---|---|---|
committer | Julien Dessaux | 2011-04-13 20:15:55 +0200 |
commit | ff07633fb8f81577ffec409cbf0a3c7361990f6c (patch) | |
tree | 5021a2e13f878c6b29ad3ec835f694d0726b7e9c /Hsbot/Types.hs | |
parent | Regressed from parsec3 to parsec2 to solve a cabal install weird dependency p... (diff) | |
download | hsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.tar.gz hsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.tar.bz2 hsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.zip |
Began a big refactoring/rewriting (again)
Diffstat (limited to '')
-rw-r--r-- | Hsbot/Types.hs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Hsbot/Types.hs b/Hsbot/Types.hs new file mode 100644 index 0000000..ff57c49 --- /dev/null +++ b/Hsbot/Types.hs @@ -0,0 +1,54 @@ +module Hsbot.Types + ( Bot + , BotState (..) + , BotStatus (..) + , BotEnv (..) + , Env + , Message (..) + , PluginState (..) + ) where + +import Control.Concurrent +import qualified Data.Map as M +import Control.Monad.Reader +import Control.Monad.State +import qualified Network.IRC as IRC +import Network.TLS +import System.IO + +import Hsbot.Config + +-- The bot environment +type Env = ReaderT BotEnv + +data BotEnv = BotEnv + { envHandle :: Handle + , envChan :: Chan Message + , envQuitMv :: MVar (BotStatus) + , envThreadIdsMv :: MVar [ThreadId] + , envConfig :: Config + , envTLS :: Maybe TLSParams + , envTLSCtx :: Maybe TLSCtx + } + +-- The bot monad +type Bot = StateT BotState + +data BotState = BotState + { botPlugins :: M.Map String (PluginState, MVar (), ThreadId) + , botCommands :: M.Map String [String] + , botChannels :: [String] + , botNickname :: String + } + +-- The Plugin monad +data PluginState = PluginState + { pluginName :: String + , pluginChan :: Chan Message + } + +data BotStatus = BotContinue | BotExit | BotReload | BotRestart deriving (Show) + +data Message = IncomingMsg IRC.Message + | OutgoingMsg IRC.Message + |