simpoole-0.0.0: Simple pool
Safe HaskellNone
LanguageHaskell2010

Simpoole

Synopsis

Documentation

data Pool m a Source #

Pool of resources

mapPool :: (forall x. m x -> n x) -> Pool m a -> Pool n a Source #

Lift a natural transformation m ~> n to Pool m ~> Pool n.

newUnlimitedPool Source #

Arguments

:: (MonadConc m, MonadIO m) 
=> m a

Resource creation

-> (a -> m ())

Resource destruction

-> NominalDiffTime

Maximum idle time (+-1s) after which a resource is destroyed

-> m (Pool m a) 

Create a new pool that has no limit on how many resources it may create and hold.

newPool Source #

Arguments

:: (MonadConc m, MonadIO m, MonadFail m) 
=> m a

Resource creation

-> (a -> m ())

Resource destruction

-> Int

Maximum number of resources to exist at the same time

-> NominalDiffTime

Maximum idle time (+-1s) after which a resource is destroyed

-> m (Pool m a) 

Similar to newUnlimitedPool but allows you to limit the number of resources that will exist at the same time. When all resources are currently in use, further resource acquisition will block until one is no longer in use.

withResource :: MonadMask m => Pool m a -> (a -> m r) -> m r Source #

Use a resource from the pool.

poolMetrics :: Pool m a -> m (Metrics Natural) Source #

Fetch pool metrics.

data Metrics a Source #

Pool metrics

Constructors

Metrics 

Fields

Instances

Instances details
Functor Metrics Source # 
Instance details

Defined in Simpoole

Methods

fmap :: (a -> b) -> Metrics a -> Metrics b #

(<$) :: a -> Metrics b -> Metrics a #

Foldable Metrics Source # 
Instance details

Defined in Simpoole

Methods

fold :: Monoid m => Metrics m -> m #

foldMap :: Monoid m => (a -> m) -> Metrics a -> m #

foldMap' :: Monoid m => (a -> m) -> Metrics a -> m #

foldr :: (a -> b -> b) -> b -> Metrics a -> b #

foldr' :: (a -> b -> b) -> b -> Metrics a -> b #

foldl :: (b -> a -> b) -> b -> Metrics a -> b #

foldl' :: (b -> a -> b) -> b -> Metrics a -> b #

foldr1 :: (a -> a -> a) -> Metrics a -> a #

foldl1 :: (a -> a -> a) -> Metrics a -> a #

toList :: Metrics a -> [a] #

null :: Metrics a -> Bool #

length :: Metrics a -> Int #

elem :: Eq a => a -> Metrics a -> Bool #

maximum :: Ord a => Metrics a -> a #

minimum :: Ord a => Metrics a -> a #

sum :: Num a => Metrics a -> a #

product :: Num a => Metrics a -> a #

Traversable Metrics Source # 
Instance details

Defined in Simpoole

Methods

traverse :: Applicative f => (a -> f b) -> Metrics a -> f (Metrics b) #

sequenceA :: Applicative f => Metrics (f a) -> f (Metrics a) #

mapM :: Monad m => (a -> m b) -> Metrics a -> m (Metrics b) #

sequence :: Monad m => Metrics (m a) -> m (Metrics a) #

Show a => Show (Metrics a) Source # 
Instance details

Defined in Simpoole

Methods

showsPrec :: Int -> Metrics a -> ShowS #

show :: Metrics a -> String #

showList :: [Metrics a] -> ShowS #