Module Event
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(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the unix threads library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
unix threads))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
unix threads))type``'a channel
The type of communication channels carrying values of type 'a.
valnew_channel : ``unit->'achannel
Return a new channel.
type``+'a event
The type of communication events returning a result of type 'a.
send ch v returns the event consisting in sending the value v over
the channel ch. The result value of this event is ().
receive ch returns the event consisting in receiving a value from the
channel ch. The result value of this event is the value received.
valalways :'a->'aevent
always v returns an event that is always ready for synchronization.
The result value of this event is v.
choose evl returns the event that is the alternative of all the events
in the list evl.
wrap ev fn returns the event that performs the same communications as
ev, then applies the post-processing function fn on the return
value.
wrap_abort ev fn returns the event that performs the same
communications as ev, but if it is not selected the function fn is
called after the synchronization.
guard fn returns the event that, when synchronized, computes fn()
and behaves as the resulting event. This enables computing events with
side-effects at the time of the synchronization operation.
valsync :'aevent->'a
'Synchronize' on an event: offer all the communication possibilities specified in the event to the outside world, and block until one of the communications succeed. The result value of that communication is returned.
valselect :'aeventlist``->'a
'Synchronize' on an alternative of events. select evl is shorthand for
sync(choose evl).
valpoll :'aevent->'aoption
Non-blocking version of Event.sync: offer all the
communication possibilities specified in the event to the outside world,
and if one can take place immediately, perform it and return Some r
where r is the result value of that communication. Otherwise, return
None without blocking.
