Module Lwt_pool
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt
:DkSDKProject_DeclareAvailable(lwt CONSTRAINT "= 5.6.1" FINDLIBS lwt lwt.unix) DkSDKProject_MakeAvailable(lwt)
Add the
Findlib::lwt
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file and add:depends: [ # ... existing dependencies ... "lwt" {>= "5.6.1"} ]
Then run:
opam install . --deps-only
FINALLY, add the lwt
library to any desired (library)
and/or (executable)
targets in your **/dune
files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt))
type
``'a t
A pool containing elements of type 'a
.
val
create : ``int
->
``?validate:``(
'a
->
``bool
Lwt.t
)``
->
``?check:``(
'a
->
``(``bool
->
unit)``
->
unit)``
->
``?dispose:``(
'a
->
``unit
Lwt.t
)``
->
``(``unit
->
'a
Lwt.t
)``
->
'a
t
create n ?check ?validate ?dispose f
creates a new pool with at most
n
elements. f
is used to create a new pool element. Elements are
created on demand and re-used until disposed of.
-
parameter validate
is called each time a pool element is accessed by
use
, before the element is provided touse
's callback. Ifvalidate element
resolves totrue
the element is considered valid and is passed to the callback for use as-is. Ifvalidate element
resolves tofalse
the tested pool element is passed todispose
then dropped, with a new one is created to takeelement
's place in the pool.validate
is available since Lwt 3.2.0. -
parameter check
is called after the resolution of
use
's callback when the resolution is a failed promise.check element is_ok
must callis_ok
exactly once withtrue
ifelement
is still valid andfalse
otherwise. Ifcheck
callsis_ok false
thendispose
will be run onelement
and the element will not be returned to the pool. -
parameter dispose
is used as described above and by
clear
to dispose of all elements in a pool.dispose
is not guaranteed to be called on the elements in a pool when the pool is garbage collected.clear
should be used if the elements of the pool need to be explicitly disposed of.
use p f
requests one free element of the pool p
and gives it to the
function f
. The element is put back into the pool after the promise
created by f
completes.
In the case that p
is exhausted and the maximum number of elements is
reached, use
will wait until one becomes free.
clear p
will clear all elements in p
, calling the dispose
function
associated with p
on each of the cleared elements. Any elements from
p
which are currently in use will be disposed of once they are
released.
The next call to use p
after clear p
guarantees a freshly created
pool element.
Disposals are performed sequentially in an undefined order.
- since 3.2.0