From: Mart Lubbers Date: Tue, 18 Jul 2017 13:49:41 +0000 (+0200) Subject: change start signature X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=e0d247935b1e66e7ae77c1e73dd6a0623dc97f5f;p=cloogle-irc.git change start signature --- diff --git a/IRCBot.icl b/IRCBot.icl index e736db9..df21c0a 100644 --- a/IRCBot.icl +++ b/IRCBot.icl @@ -14,31 +14,31 @@ import StdBool TIMEOUT :== Just 1000 -bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage .a *World -> *(Maybe [IRCMessage], .a, *World)) *World -> *(Maybe String, .a, *World) +bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage *(.a, *World) -> *(Maybe [IRCMessage], (.a, *World))) *World -> *(Maybe String, *(.a, *World)) bot (host, port) start end state bot w //Lookup hostname # (ip, w) = lookupIPAddress host w | isNothing ip - = (Just $ "DNS lookup for " +++ host +++ " failed", state, w) + = (Just $ "DNS lookup for " +++ host +++ " failed", (state, w)) //Connect # (rpt,chan,w) = connectTCP_MT TIMEOUT (fromJust ip, port) w | rpt == TR_Expired - = (Just $ "Connection to " +++ host +++ " timed out", state, w) + = (Just $ "Connection to " +++ host +++ " timed out", (state, w)) | rpt == TR_NoSuccess - = (Just $ "Could not connect to " +++ host, state, w) + = (Just $ "Could not connect to " +++ host, (state, w)) // Send startup commands # (merr, chan, w) = send (map toString start) (fromJust chan) w -| isError merr = (Just $ fromError merr, state, w) +| isError merr = (Just $ fromError merr, (state, w)) //Start processing function # (mer, chan, state, w) = process chan "" state bot w -| isError mer = (Just $ fromError mer, state, w) +| isError mer = (Just $ fromError mer, (state, w)) // Send shutdown commands # (merr, {rChannel,sChannel}, w) = send (map toString end) chan w -| isError merr = (Just $ fromError merr, state, w) +| isError merr = (Just $ fromError merr, (state, w)) //Close channels -= (Nothing, state, closeChannel sChannel (closeRChannel rChannel w)) += (Nothing, (state, closeChannel sChannel (closeRChannel rChannel w))) -process :: TCP_DuplexChannel String .a (IRCMessage .a *World -> (Maybe [IRCMessage], .a, *World)) *World -> (MaybeErrorString (), TCP_DuplexChannel, .a, *World) +process :: TCP_DuplexChannel String .a (IRCMessage (.a, *World) -> (Maybe [IRCMessage], (.a, *World))) *World -> (MaybeErrorString (), TCP_DuplexChannel, (.a, *World)) process chan acc state bot w //See if we have a message = case split "\r\n" acc of @@ -46,21 +46,21 @@ process chan acc state bot w [m] //Receive # (merr_resp, chan, w) = recv chan w - | isError merr_resp = (Error (fromError merr_resp), chan, state, w) + | isError merr_resp = (Error (fromError merr_resp), chan, (state, w)) # (Ok mresp) = merr_resp | isNothing mresp = process chan acc state bot w - = process chan (m +++ fromJust mresp) state bot w + = process chan (m +++ fromJust mresp) (state, bot) w //We have a successfull split and therefore we process at least one message [m:xs] # acc = join "\r\n" xs = case parseIRCMessage $ m +++ "\r\n" of (Left err) = (Error $ "IRC Parsing error: " +++ join "\n" err, chan, state, w) (Right msg) - # (mircc, state, w) = bot msg state w - | isNothing mircc = (Ok (), chan, state, w) // Bot asks to quit + # (mircc, state, w) = bot msg (state, w) + | isNothing mircc = (Ok (), chan, (state, w)) // Bot asks to quit //Possible send the commands # (merr, chan, w) = send (map toString $ fromJust mircc) chan w - | isError merr = (Error $ fromError merr, chan, state, w) + | isError merr = (Error $ fromError merr, chan, (state, w)) //Recurse = process chan acc state bot w diff --git a/cloogleirc.icl b/cloogleirc.icl index 1801ef8..a83663b 100644 --- a/cloogleirc.icl +++ b/cloogleirc.icl @@ -108,15 +108,15 @@ cloogle data w , bs_strftime :: String } -//Start :: *World -> (MaybeErrorString (), *World) +Start :: *World -> (Maybe String, *World) Start w # ([arg0:args], w) = getCommandLine w # (io, w) = stdio w # bs = parseCLI args -| isError bs = (Error $ "\n" +++ fromError bs +++ "\n", snd $ fclose io w) +| isError bs = (Just $ "\n" +++ fromError bs +++ "\n", snd $ fclose io w) # (Ok bs) = bs # (merr, io, w) = bot (bs.bs_server, bs.bs_port) (startup bs) shutdown io (process bs.bs_strftime) w -= (maybe (Ok ()) Error merr, snd $ fclose io w) += (merr, snd $ fclose io w) where parseCLI :: [String] -> MaybeErrorString BotSettings parseCLI [] = Ok