Moonpool_lwt
Lwt_engine-based event loop for Moonpool.
In what follows, we mean by "lwt thread" the thread running Lwt_main.run
(so, the thread where the Lwt event loop and all Lwt callbacks execute).
NOTE: this is experimental and might change in future versions.
module Fiber = Moonpool_fib.Fiber
module FLS = Moonpool_fib.Fls
val fut_of_lwt : 'a Lwt.t -> 'a Moonpool.Fut.t
fut_of_lwt lwt_fut
makes a thread-safe moonpool future that completes when lwt_fut
does. This must be run from within the Lwt thread.
val lwt_of_fut : 'a Moonpool.Fut.t -> 'a Lwt.t
lwt_of_fut fut
makes a lwt future that completes when fut
does. This must be called from the Lwt thread, and the result must always be used only from inside the Lwt thread.
val await_lwt : 'a Lwt.t -> 'a
await_lwt fut
awaits a Lwt future from inside a task running on a moonpool runner. This must be run from within a Moonpool runner so that the await-ing effect is handled.
val run_in_lwt : (unit -> 'a Lwt.t) -> 'a Moonpool.Fut.t
run_in_lwt f
runs f()
from within the Lwt thread and returns a thread-safe future. This can be run from anywhere.
val run_in_lwt_and_await : (unit -> 'a Lwt.t) -> 'a
run_in_lwt_and_await f
runs f
in the Lwt thread, and awaits its result. Must be run from inside a moonpool runner so that the await-in effect is handled.
This is similar to Moonpool.await @@ run_in_lwt f
.
val get_runner : unit -> Moonpool.Runner.t
Returns the runner from within which this is called. Must be run from within a fiber.
module IO : sig ... end
IO using the Lwt event loop.
module IO_in : sig ... end
Input channel
module IO_out : sig ... end
Output channel
module TCP_server : sig ... end
module TCP_client : sig ... end
val detach_in_runner : runner:Moonpool.Runner.t -> (unit -> 'a) -> 'a Lwt.t
detach_in_runner ~runner f
runs f
in the given moonpool runner, and returns a lwt future. This must be run from within the thread running Lwt_main
.
val main_with_runner : runner:Moonpool.Runner.t -> (unit -> 'a) -> 'a
main_with_runner ~runner f
starts a Lwt-based event loop and runs f()
inside a fiber in runner
.
Like main_with_runner
but with a default choice of runner.