Module Lwt_timeout
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))typet
valcreate : ``int->``(``unit->unit)``->t
Lwt_timeout.create n f creates a new timeout object with duration n
seconds. f is the action, a function to be called once the timeout
expires. f should not raise exceptions.
The timeout is not started until Lwt_timeout.start is
called on it.
valstart :t->unit
Starts the given timeout.
Starting a timeout that has already been started has the same effect as
stopping it, and then restarting it with its original duration. So,
suppose you have timeout with a duration of three seconds, which was
started two seconds ago. The next call to its action is scheduled for
one second in the future. Calling Lwt_timeout.start timeout at this
point cancels this upcoming action call, and schedules a call three
seconds from now.
valstop :t->unit
Stops (cancels) the given timeout.
valchange :t->``int->unit
Changes the duration of the given timeout.
If the timeout has already been started, it is stopped, and restarted
with its new duration. This is similar to how
Lwt_timeout.start works on a timeout that has already
been started.
valset_exn_handler : ``(``exn->unit)``->unit
Lwt_timeout.set_exn_handler f sets the handler to be used for
exceptions raised by timeout actions. Recall that actions are not
allowed to raise exceptions. If they do raise an exception exn despite
this, f exn is called.
The default behavior of f exn, set by Lwt_timeout on program
startup, is to pass exn to
!Lwt.async_exception_hook. The
default behavior of that is to terminate the process.
