-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Thread-safe resource pools.
--
-- Useful for stuff like database connection pools.
@package pool
@version 0.0.1
module Data.Pool
createPool :: (MonadIO m, MonadPeelIO m) => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> m b
createPoolCheckAlive :: (MonadIO m, MonadPeelIO m) => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> (a -> IO Bool) -> m b
withPool :: (MonadIO m, MonadPeelIO m) => Pool a -> (a -> m b) -> m (Maybe b)
-- | This function throws a PoolExhaustedException when no resources
-- are available. See withPoolAllocate to avoid this.
withPool' :: (MonadIO m, MonadPeelIO m) => Pool a -> (a -> m b) -> m b
-- | Same as withPool', but instead of throwing a
-- PoolExhaustedException when there the maximum number of
-- resources are created and allocated, it allocates a new resource,
-- passes it to the subprocess and then frees it.
withPoolAllocate :: MonadPeelIO m => Pool a -> (a -> m b) -> m b
data Pool a
data PoolStats
PoolStats :: Int -> Int -> Int -> PoolStats
poolStatsMax :: PoolStats -> Int
poolStatsAvailable :: PoolStats -> Int
poolStatsCreated :: PoolStats -> Int
poolStats :: Pool a -> IO PoolStats
instance Typeable PoolExhaustedException
instance Show PoolExhaustedException
instance Exception PoolExhaustedException