Moonpool_lwtLwt_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.Fibermodule FLS = Moonpool_fib.Flsval fut_of_lwt : 'a Lwt.t -> 'a Moonpool.Fut.tfut_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.tlwt_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 -> 'aawait_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.trun_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) -> 'arun_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.tReturns the runner from within which this is called. Must be run from within a fiber.
module IO : sig ... endIO using the Lwt event loop.
module IO_in : sig ... endInput channel
module IO_out : sig ... endOutput channel
module TCP_server : sig ... endmodule TCP_client : sig ... endval detach_in_runner : runner:Moonpool.Runner.t -> (unit -> 'a) -> 'a Lwt.tdetach_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) -> 'amain_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.