summaryrefslogtreecommitdiff
path: root/Hsbot/Types.hs
diff options
context:
space:
mode:
authorJulien Dessaux2011-04-13 20:15:55 +0200
committerJulien Dessaux2011-04-13 20:15:55 +0200
commitff07633fb8f81577ffec409cbf0a3c7361990f6c (patch)
tree5021a2e13f878c6b29ad3ec835f694d0726b7e9c /Hsbot/Types.hs
parentRegressed from parsec3 to parsec2 to solve a cabal install weird dependency p... (diff)
downloadhsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.tar.gz
hsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.tar.bz2
hsbot-ff07633fb8f81577ffec409cbf0a3c7361990f6c.zip
Began a big refactoring/rewriting (again)
Diffstat (limited to '')
-rw-r--r--Hsbot/Types.hs54
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
+