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::lwtlibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile 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.
valcreate : ``int->``?validate:``('a->``boolLwt.t)``->``?check:``('a->``(``bool->unit)``->unit)``->``?dispose:``('a->``unitLwt.t)``->``(``unit->'aLwt.t)``->'at
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 elementresolves totruethe element is considered valid and is passed to the callback for use as-is. Ifvalidate elementresolves tofalsethe tested pool element is passed todisposethen dropped, with a new one is created to takeelement's place in the pool.validateis 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_okmust callis_okexactly once withtrueifelementis still valid andfalseotherwise. Ifcheckcallsis_ok falsethendisposewill be run onelementand the element will not be returned to the pool. -
parameter dispose
is used as described above and by
clearto dispose of all elements in a pool.disposeis not guaranteed to be called on the elements in a pool when the pool is garbage collected.clearshould 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
