packages feed

ircbot 0.5.1 → 0.5.2

raw patch · 2 files changed

+32/−10 lines, 2 filesdep ~networkdep ~stm

Dependency ranges changed: network, stm

Files

Network/IRC/Bot/Core.hs view
@@ -59,7 +59,11 @@             }  -- | connect to irc server and send NICK and USER commands-ircConnect :: HostName -> PortID -> String -> User -> IO Handle+ircConnect :: HostName+           -> PortID+           -> String+           -> User+           -> IO Handle ircConnect host port n u =     do h <- connectTo host port        hSetBuffering h LineBuffering@@ -90,7 +94,6 @@            (Just (burst, delay)) ->                     do limiter <- newLimiter burst delay                        return (limit limiter, Just $ limitsThreadId limiter)-     doConnect logger host port nick user hTMVar connQSem      outgoingTid  <- forkIO $ forever $                       do msg <- readChan outgoingChan                          writeMaybeChan logChan msg@@ -99,7 +102,9 @@                          hPutStrLn h (encode msg) `catch` (reconnect logger host port nick user hTMVar connQSem)                          now <- getCurrentTime                          atomically $ swapTMVar tmv now-     incomingTid  <- forkIO $ forever $+     incomingTid  <- forkIO $ do+                      doConnect logger host port nick user hTMVar connQSem+                      forever $                        do h <- atomically $ readTMVar hTMVar                           msgStr <- (hGetLine h) `catch` (\e -> reconnect logger host port nick user hTMVar connQSem e >> return "")                           now <- getCurrentTime@@ -111,14 +116,21 @@                                  writeMaybeChan logChan msg                                  writeChan incomingChan msg      let forceReconnect =-             do putStrLn "forceReconnect 1"+             do putStrLn "forceReconnect: getting handle"                 h <- atomically $ readTMVar hTMVar-                putStrLn "forceReconnect 2"+                putStrLn "forceReconnect: sending /quit"                 writeChan outgoingChan (quit $ Just "restarting...")+                putStrLn "forceReconnect: closing handle"                 hClose h-                putStrLn "forceReconnect 3"+                putStrLn "done."      return (outgoingTid, incomingTid, limitTid, forceReconnect) +ircConnectLoop :: (LogLevel -> String -> IO a) -- ^ logging+               -> HostName+               -> PortID+               -> String+               -> User+               -> IO Handle ircConnectLoop logger host port nick user =         (ircConnect host port nick user) `catch`         (\e ->@@ -138,6 +150,12 @@ reconnect :: Logger -> String -> PortID -> String -> User -> TMVar Handle -> QSem -> IOException -> IO () reconnect logger host port nick user hTMVar connQSem e =     do logger Normal $ "IRC Connection died: " ++ show e+{-+       atomically $ do empty <- isEmptyTMVar hTMVar+                       if empty+                          then return ()+                          else takeTMVar hTMVar >> return ()+-}        doConnect logger host port nick user hTMVar connQSem  onConnectLoop :: Logger -> String -> String -> Chan Message -> QSem -> BotPartT IO () -> IO ThreadId
ircbot.cabal view
@@ -1,7 +1,7 @@ Name:                ircbot-Version:             0.5.1+Version:             0.5.2 Synopsis:            A library for writing irc bots-Homepage:            http://patch-tag.com/r/stepcut/ircbot+Homepage:            http://hub.darcs.net/stepcut/ircbot License:             BSD3 License-file:        LICENSE Author:              Jeremy Shaw, Eric Mertens@@ -12,6 +12,10 @@ Build-type:          Simple Cabal-version:       >=1.6 +source-repository head+    type:     darcs+    location: http://hub.darcs.net/stepcut/ircbot+ Library   Exposed-modules:                        Network.IRC.Bot@@ -36,10 +40,10 @@                   filepath   >= 1.2 && < 1.4,                   irc        == 0.5.*,                   mtl        >= 2.0 && < 2.2,-                  network    == 2.3.*,+                  network    >= 2.3 && < 2.5,                   old-locale == 1.0.*,                   parsec     == 3.1.*,                   time       == 1.4.*,                   unix       >= 2.4 && < 2.6,                   random     == 1.0.*,-                  stm        >= 2.2 && < 2.4+                  stm        >= 2.2 && < 2.5