Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
A pool implementation for the current concurrency library.
val create :
?max_size:int ->
?check:('a -> (bool -> unit) -> unit) ->
?validate:('a -> bool Async.Deferred.t) ->
(unit -> ('a, 'e) result Async.Deferred.t) ->
('a -> unit Async.Deferred.t) ->
('a, 'e) t
Internal: create alloc free
is a pool of resources allocated by alloc
and freed by free
. This is primarily indented for implementing the connect_pool
functions.
val size : ('a, 'e) t -> int
size pool
is the current number of open resources in pool
.
val use :
?priority:float ->
('a -> ('b, 'e) result Async.Deferred.t) ->
('a, 'e) t ->
('b, 'e) result Async.Deferred.t
use f pool
calls f
on a resource drawn from pool
, handing back the resource to the pool when f
exits.
val drain : ('a, 'e) t -> unit Async.Deferred.t
drain pool
closes all resources in pool
. The pool is still usable, as new resources will be created on demand.