irc-client 1.1.1.1 → 1.1.2.0
raw patch · 9 files changed
+127/−108 lines, 9 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Network/IRC/Client.hs +21/−21
- Network/IRC/Client/Events.hs +21/−19
- Network/IRC/Client/Internal.hs +37/−25
- Network/IRC/Client/Internal/Lens.hs +9/−8
- Network/IRC/Client/Internal/Types.hs +23/−20
- Network/IRC/Client/Lens.hs +2/−2
- Network/IRC/Client/Utils.hs +11/−10
- Setup.hs +1/−1
- irc-client.cabal +2/−2
Network/IRC/Client.hs view
@@ -162,30 +162,30 @@ , C.toByteString ) where -import Control.Concurrent.STM (newTVarIO)-import Control.Concurrent.STM.TBMChan (newTBMChanIO)-import Control.Monad.IO.Class (MonadIO, liftIO)-import Data.ByteString (ByteString)-import qualified Data.Conduit.Network.TLS as TLS-import qualified Data.Set as S-import Data.Text (Text)-import qualified Data.Text as T-import Data.Version (showVersion)-import qualified Data.X509 as X-import qualified Data.X509.CertificateStore as X-import qualified Data.X509.Validation as X-import Network.Connection as TLS (TLSSettings(..))-import qualified Network.IRC.Conduit as C-import qualified Network.TLS as TLS+import Control.Concurrent.STM (newTVarIO)+import Control.Concurrent.STM.TBMChan (newTBMChanIO)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.ByteString (ByteString)+import qualified Data.Conduit.Network.TLS as TLS+import qualified Data.Set as S+import Data.Text (Text)+import qualified Data.Text as T+import Data.Version (showVersion)+import qualified Data.X509 as X+import qualified Data.X509.CertificateStore as X+import qualified Data.X509.Validation as X+import Network.Connection as TLS (TLSSettings(..))+import qualified Network.IRC.Conduit as C+import qualified Network.TLS as TLS -import Network.IRC.Client.Events-import Network.IRC.Client.Internal-import Network.IRC.Client.Lens+import Network.IRC.Client.Events+import Network.IRC.Client.Internal+import Network.IRC.Client.Lens -- I think exporting 'fork' with 'Disconnect' gives better documentation.-import Network.IRC.Client.Utils hiding (fork)-import qualified Network.IRC.Client.Utils as U+import Network.IRC.Client.Utils hiding (fork)+import qualified Network.IRC.Client.Utils as U -import qualified Paths_irc_client as Paths+import qualified Paths_irc_client as Paths -------------------------------------------------------------------------------
Network/IRC/Client/Events.hs view
@@ -44,31 +44,33 @@ , module Network.IRC.Conduit.Lens ) where -import Control.Applicative ((<$>), (<|>))-import Control.Concurrent.STM (atomically, readTVar, modifyTVar)-import Control.Monad.Catch (SomeException, fromException, throwM)-import Control.Monad.IO.Class (liftIO)-import Data.Char (isAlphaNum)-import Data.Maybe (fromMaybe)-import Data.Monoid ((<>))-import Data.Text (Text, breakOn, takeEnd, toUpper)-import Data.Time.Clock (getCurrentTime)-import Data.Time.Format (formatTime)-import Network.IRC.Conduit (Event(..), Message(..), Source(..))-import Network.IRC.CTCP (fromCTCP)-import Network.IRC.Conduit.Lens+import Control.Applicative ((<$>), (<|>))+import Control.Concurrent.STM (atomically, modifyTVar, readTVar)+import Control.Monad.Catch (SomeException, fromException,+ throwM)+import Control.Monad.IO.Class (liftIO)+import Data.Char (isAlphaNum)+import Data.Maybe (fromMaybe)+import Data.Monoid ((<>))+import Data.Text (Text, breakOn, takeEnd, toUpper)+import Data.Time.Clock (getCurrentTime)+import Data.Time.Format (formatTime)+import Network.IRC.Conduit (Event(..), Message(..),+ Source(..))+import Network.IRC.Conduit.Lens+import Network.IRC.CTCP (fromCTCP) #if MIN_VERSION_time(1,5,0)-import Data.Time.Format (defaultTimeLocale)+import Data.Time.Format (defaultTimeLocale) #else-import System.Locale (defaultTimeLocale)+import System.Locale (defaultTimeLocale) #endif -import qualified Data.Text as T+import qualified Data.Text as T -import Network.IRC.Client.Internal-import Network.IRC.Client.Lens-import Network.IRC.Client.Utils+import Network.IRC.Client.Internal+import Network.IRC.Client.Lens+import Network.IRC.Client.Utils -------------------------------------------------------------------------------
Network/IRC/Client/Internal.hs view
@@ -22,34 +22,46 @@ , module Network.IRC.Client.Internal.Types ) where -import Control.Applicative ((<$>))-import Control.Concurrent (forkIO, killThread, myThreadId, threadDelay, throwTo)-import Control.Concurrent.STM (STM, atomically, readTVar, readTVarIO, writeTVar)-import Control.Concurrent.STM.TBMChan (TBMChan, closeTBMChan, isClosedTBMChan, isEmptyTBMChan, readTBMChan, writeTBMChan, newTBMChan)-import Control.Monad (forM_, unless, void, when)-import Control.Monad.Catch (SomeException, catch)-import Control.Monad.IO.Class (MonadIO, liftIO)-import Control.Monad.Reader (ask, runReaderT)-import Data.ByteString (ByteString)-import Data.Conduit (ConduitM, (.|), await, awaitForever, yield)-import Data.IORef (IORef, newIORef, readIORef, writeIORef)-import qualified Data.Set as S-import Data.Text (Text)-import Data.Text.Encoding (decodeUtf8, encodeUtf8)-import Data.Time.Clock (NominalDiffTime, UTCTime, addUTCTime, diffUTCTime, getCurrentTime)-import Data.Time.Format (formatTime)-import Data.Void (Void)-import Network.IRC.Conduit (Event(..), Message(..), Source(..), floodProtector, rawMessage, toByteString)+import Control.Applicative ((<$>))+import Control.Concurrent (forkIO, killThread,+ myThreadId, threadDelay,+ throwTo)+import Control.Concurrent.STM (STM, atomically, readTVar,+ readTVarIO, writeTVar)+import Control.Concurrent.STM.TBMChan (TBMChan, closeTBMChan,+ isClosedTBMChan,+ isEmptyTBMChan, newTBMChan,+ readTBMChan, writeTBMChan)+import Control.Monad (forM_, unless, void, when)+import Control.Monad.Catch (SomeException, catch)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Control.Monad.Reader (ask, runReaderT)+import Data.ByteString (ByteString)+import Data.Conduit (ConduitM, await,+ awaitForever, yield, (.|))+import Data.IORef (IORef, newIORef, readIORef,+ writeIORef)+import qualified Data.Set as S+import Data.Text (Text)+import Data.Text.Encoding (decodeUtf8, encodeUtf8)+import Data.Time.Clock (NominalDiffTime, UTCTime,+ addUTCTime, diffUTCTime,+ getCurrentTime)+import Data.Time.Format (formatTime)+import Data.Void (Void)+import Network.IRC.Conduit (Event(..), Message(..),+ Source(..), floodProtector,+ rawMessage, toByteString) #if MIN_VERSION_time(1,5,0)-import Data.Time.Format (defaultTimeLocale)+import Data.Time.Format (defaultTimeLocale) #else-import System.Locale (defaultTimeLocale)+import System.Locale (defaultTimeLocale) #endif -import Network.IRC.Client.Internal.Lens-import Network.IRC.Client.Internal.Types-import Network.IRC.Client.Lens+import Network.IRC.Client.Internal.Lens+import Network.IRC.Client.Internal.Types+import Network.IRC.Client.Lens -------------------------------------------------------------------------------@@ -126,13 +138,13 @@ -- Fork a thread to disconnect if the timeout elapses. mainTId <- liftIO myThreadId let time = _timeout cconf- let delay = round time+ let delayms = 1000000 * round time let timeoutThread = do now <- getCurrentTime prior <- readIORef lastReceived if diffUTCTime now prior >= time then throwTo mainTId Timeout- else threadDelay delay >> timeoutThread+ else threadDelay delayms >> timeoutThread timeoutTId <- liftIO (forkIO timeoutThread) -- Start the client.
Network/IRC/Client/Internal/Lens.hs view
@@ -15,13 +15,14 @@ -- of this library. module Network.IRC.Client.Internal.Lens where -import Control.Applicative (Const(..))-import Control.Concurrent.STM (TVar, STM, atomically, readTVar, writeTVar)-import Control.Monad.IO.Class (MonadIO, liftIO)-import Data.Functor.Contravariant (Contravariant)-import Data.Functor.Identity (Identity(..))-import Data.Monoid (First(..))-import Data.Profunctor (Choice)+import Control.Applicative (Const(..))+import Control.Concurrent.STM (STM, TVar, atomically, readTVar,+ readTVarIO, writeTVar)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.Functor.Contravariant (Contravariant)+import Data.Functor.Identity (Identity(..))+import Data.Monoid (First(..))+import Data.Profunctor (Choice) -------------------------------------------------------------------------------@@ -75,7 +76,7 @@ -- | Atomically snapshot some shared state. snapshot :: MonadIO m => Getting (TVar a) s (TVar a) -> s -> m a-snapshot lens = liftIO . atomically . readTVar . get lens+snapshot lens = liftIO . readTVarIO . get lens -- | Atomically snapshot and modify some shared state. snapshotModify :: MonadIO m => Lens' s (TVar a) -> (a -> STM (a, b)) -> s -> m b
Network/IRC/Client/Internal/Types.hs view
@@ -17,22 +17,25 @@ -- of this library. module Network.IRC.Client.Internal.Types where -import Control.Applicative (Alternative)-import Control.Concurrent (ThreadId)-import Control.Concurrent.STM (TVar, atomically, readTVar, writeTVar)-import Control.Concurrent.STM.TBMChan (TBMChan)-import Control.Monad (MonadPlus)-import Control.Monad.Catch (Exception, MonadThrow, MonadCatch, MonadMask, SomeException)-import Control.Monad.IO.Class (MonadIO, liftIO)-import Control.Monad.Reader (MonadReader, ReaderT, asks)-import Control.Monad.State (MonadState(..))-import Data.ByteString (ByteString)-import Data.Conduit (ConduitM)-import qualified Data.Set as S-import Data.Text (Text)-import Data.Time.Clock (NominalDiffTime)-import Data.Void (Void)-import Network.IRC.Conduit (Event(..), Message, Source)+import Control.Applicative (Alternative)+import Control.Concurrent (ThreadId)+import Control.Concurrent.STM (TVar, atomically, readTVar,+ readTVarIO, writeTVar)+import Control.Concurrent.STM.TBMChan (TBMChan)+import Control.Monad (MonadPlus)+import Control.Monad.Catch (Exception, MonadCatch,+ MonadMask, MonadThrow,+ SomeException)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Control.Monad.Reader (MonadReader, ReaderT, asks)+import Control.Monad.State (MonadState(..))+import Data.ByteString (ByteString)+import Data.Conduit (ConduitM)+import qualified Data.Set as S+import Data.Text (Text)+import Data.Time.Clock (NominalDiffTime)+import Data.Void (Void)+import Network.IRC.Conduit (Event(..), Message, Source) -------------------------------------------------------------------------------@@ -51,7 +54,7 @@ pure a get = do tvar <- asks _userState- liftIO $ atomically (readTVar tvar)+ liftIO $ readTVarIO tvar put s = do tvar <- asks _userState liftIO $ atomically (writeTVar tvar s)@@ -92,9 +95,9 @@ , _flood :: NominalDiffTime -- ^ The minimum time between two adjacent messages. , _timeout :: NominalDiffTime- -- ^ The maximum time between received messages from the server. If no- -- messages arrive from the server for this period, the client is sent- -- a 'Timeout' exception and disconnects.+ -- ^ The maximum time (in seconds) between received messages from+ -- the server. If no messages arrive from the server for this+ -- period, the client is sent a 'Timeout' exception and disconnects. , _onconnect :: IRC s () -- ^ Action to run after sending the @PASS@ and @USER@ commands to the -- server. The default behaviour is to send the @NICK@ command.
Network/IRC/Client/Lens.hs view
@@ -12,8 +12,8 @@ import Control.Concurrent.STM (TVar) import Control.Monad.Catch (SomeException) import Data.ByteString (ByteString)-import Data.Profunctor (Choice (right'),- Profunctor (dimap))+import Data.Profunctor (Choice(right'),+ Profunctor(dimap)) import Data.Text (Text) import Data.Time (NominalDiffTime)
Network/IRC/Client/Utils.hs view
@@ -41,17 +41,18 @@ , modify ) where -import Control.Concurrent (ThreadId, myThreadId, forkFinally)-import Control.Concurrent.STM (TVar, STM, atomically, modifyTVar)-import Control.Monad.IO.Class (liftIO)-import qualified Data.Set as S-import Data.Text (Text)-import qualified Data.Text as T-import Network.IRC.Conduit (Event(..), Message(..), Source(..))-import Network.IRC.CTCP (toCTCP)+import Control.Concurrent (ThreadId, forkFinally, myThreadId)+import Control.Concurrent.STM (STM, TVar, atomically, modifyTVar)+import Control.Monad.IO.Class (liftIO)+import qualified Data.Set as S+import Data.Text (Text)+import qualified Data.Text as T+import Network.IRC.Conduit (Event(..), Message(..),+ Source(..))+import Network.IRC.CTCP (toCTCP) -import Network.IRC.Client.Internal-import Network.IRC.Client.Lens+import Network.IRC.Client.Internal+import Network.IRC.Client.Lens ------------------------------------------------------------------------------- -- Nicks
Setup.hs view
@@ -1,2 +1,2 @@-import Distribution.Simple+import Distribution.Simple main = defaultMain
irc-client.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 1.1.1.1+version: 1.1.2.0 -- A short (one-line) description of the package. synopsis: An IRC client library.@@ -124,4 +124,4 @@ source-repository this type: git location: https://github.com/barrucadu/irc-client.git- tag: 1.1.1.1+ tag: 1.1.2.0