Module Lwt_pool
module Lwt_pool : sig..end
Creating pools (for example pools of connections to a database).
Instead of creating a new connection each time you need one, keep a pool of opened connections and reuse opened connections that are free.
type 'a t
Type of pools
val create :
int ->
?check:('a -> (bool -> unit) -> unit) ->
?validate:('a -> bool Lwt.t) -> (unit -> 'a Lwt.t) -> 'a t
create n ?check ?validate f creates a new pool with at most n members. f is the function to use to create a new pool member.
An element of the pool is validated by the optional validate function before its Lwt_pool.use. Invalid elements are re-created.
The optional function check is called after a use of an element failed. It must call its argument excatly one with true if the pool member is still valid and false otherwise.
val use : 'a t -> ('a -> 'b Lwt.t) -> 'b Lwt.t
use p f takes one free member of the pool p and gives it to the function f.