package octez-libs
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=ddfb5076eeb0b32ac21c1eed44e8fc86a6743ef18ab23fff02d36e365bb73d61
sha512=d22a827df5146e0aa274df48bc2150b098177ff7e5eab52c6109e867eb0a1f0ec63e6bfbb0e3645a6c2112de3877c91a17df32ccbff301891ce4ba630c997a65
doc/octez-libs.stdlib/Tezos_stdlib/Lwt_utils/index.html
Module Tezos_stdlib.Lwt_utils
Source
val worker :
string ->
on_event:(string -> [ `Ended | `Failed of string | `Started ] -> unit Lwt.t) ->
run:(unit -> unit Lwt.t) ->
cancel:(unit -> unit Lwt.t) ->
unit Lwt.t
worker name ~on_event ~run ~cancel
internally calls run ()
(which returns a promise p
) and returns its own promise work
. If p
becomes fulfilled, then work
also becomes fulfilled. If p
becomes rejected then cancel ()
is called and, once its promise is resolved, work
is fulfilled. This gives the opportunity for the function cancel
to clean-up some resources.
The function on_event
is called at different times (start, failure, end) and is mostly meant as a logging mechanism but can also be used for other purposes such as synchronization between different workers.
If the promises returned by on_event
or cancel
raise an exception or become rejected, the exception/failure is simply ignored and the promise is treated as having resolved anyway.
Note that the promise work
returned by the worker
function is not cancelable. If you need to cancel the promise returned by run
, you need to embed your own synchronization system within run
. E.g.,
let p, r = Lwt.wait in let run () = let main = … in Lwt.pick [main ; p] in