Module Lwt_throttle.Make
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.unix library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt.unix))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt.unix))Parameters
moduleH:Stdlib.Hashtbl.HashedType
Signature
typekey`` =H.t
typet
valcreate : ``rate:int->``max:int->``n:int->t
Creates a rate limiter.
-
parameter rate
Maximum number of promise resolutions per second, per channel.
-
parameter max
Maximum number of pending promises allowed at once, over all channels.
-
parameter n
Initial size of the internal channel hash table. This should be approximately the number of different channels that will be used.
Lwt_throttle.wait limiter channel returns a new promise associated
with the given rate limiter and channel.
If the maximum number of pending promises for limiter has not been
reached, the promise starts pending. It will be resolved with true at
some future time, such that the rate limit of limiter is not exceeded,
with respect to other promises in the same channel.
If the maximum number of pending promises has been reached, the returned
promise is already resolved with false.
