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::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.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
module
H
:
Stdlib.Hashtbl.HashedType
Signature
type
key`` =
H.t
type
t
val
create : ``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
.