snaplet-amqp 1.0.1.2 → 1.1.0.0
raw patch · 3 files changed
+18/−13 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Snap.Snaplet.AMQP: mkAmqpPool :: MonadIO m => Config -> m AmqpPool
+ Snap.Snaplet.AMQP: mkAmqpPool :: MonadIO m => Config -> m (AmqpPool, Connection)
- Snap.Snaplet.AMQP: runAmqp :: HasAmqpPool m => (Connection -> Channel -> IO ()) -> m ()
+ Snap.Snaplet.AMQP: runAmqp :: HasAmqpPool m => (Channel -> IO ()) -> m ()
Files
- README.org +1/−1
- snaplet-amqp.cabal +3/−3
- src/Snap/Snaplet/AMQP.hs +14/−9
README.org view
@@ -51,7 +51,7 @@ exchange' = "myExchange" routingKey = "myKey" - _ <- runAmqp $ \_ chan -> do+ _ <- runAmqp $ \chan -> do _ <- declareQueue chan newQueue {queueName = serverQueue} declareExchange chan newExchange { exchangeName = exchange'
snaplet-amqp.cabal view
@@ -1,5 +1,5 @@ Name: snaplet-amqp-Version: 1.0.1.2+Version: 1.1.0.0 Synopsis: Snap framework snaplet for the AMQP library Homepage: https://github.com/ixmatus/snaplet-amqp License: BSD3@@ -12,8 +12,8 @@ Stability: stable Bug-reports: https://github.com/ixmatus/snaplet-amqp/issues Package-url: http://hackage.haskell.org/package/snaplet-amqp-Tested-with: GHC == 7.6.3-Cabal-version: >=1.14.0+Tested-with: GHC == 7.6.3, GHC == 7.8.3+Cabal-version: >=1.10 description:
src/Snap/Snaplet/AMQP.hs view
@@ -24,7 +24,7 @@ import Snap.Snaplet --------------------------------------------------------------------------------type AmqpPool = Pool Connection+type AmqpPool = Pool Channel newtype AmqpState = AmqpState { amqpPool :: AmqpPool } @@ -41,9 +41,11 @@ -- | Initialize the AMQP Snaplet. initAMQP :: SnapletInit b AmqpState initAMQP = makeSnaplet "amqp" description datadir $ do- p <- mkSnapletAmqpPool+ (p, c) <- mkSnapletAmqpPool + -- Cleanup onUnload (destroyAllResources p)+ onUnload (closeConnection c) return $ AmqpState p @@ -53,14 +55,14 @@ ------------------------------------------------------------------------------- -- | Constructs a connection in a snaplet context.-mkSnapletAmqpPool :: (MonadIO (m b v), MonadSnaplet m) => m b v AmqpPool+mkSnapletAmqpPool :: (MonadIO (m b v), MonadSnaplet m) => m b v (AmqpPool, Connection) mkSnapletAmqpPool = do conf <- getSnapletUserConfig mkAmqpPool conf ------------------------------------------------------------------------------- -- | Constructs a connect from Config.-mkAmqpPool :: MonadIO m => Config -> m AmqpPool+mkAmqpPool :: MonadIO m => Config -> m (AmqpPool, Connection) mkAmqpPool conf = do host <- liftIO $ require conf "host" port <- liftIO $ require conf "port"@@ -73,13 +75,16 @@ , coVHost = vhost , coAuth = [plain login pass] }- return =<< liftIO $ createPool (openConnection'' connOpts) closeConnection 1 30 10 + conn <- liftIO $ openConnection'' connOpts+ chp <- liftIO $ createPool (openChannel conn) closeChannel 1 30 10++ return (chp, conn)+ ------------------------------------------------------------------------------- -- | Runs an AMQP action in any monad with a HasAmqpPoolonn instance.-runAmqp :: (HasAmqpPool m) => (Connection -> Channel -> IO ()) -> m ()+runAmqp :: (HasAmqpPool m) => (Channel -> IO ()) -> m () runAmqp action = do pool <- getAmqpPool- liftIO $ withResource pool $! \conn -> do- chan <- liftIO $ openChannel conn- liftIO $! action conn chan+ liftIO $ withResource pool $! \chan -> do+ liftIO $! action chan