Ocamlnet 3 Reference Manual : Uq_lwt.lwt_backend

# Class Uq_lwt.lwt_backend

    class lwt_backend : Unixqueue.event_system -> object .. end

Adapter for turning an Ocamlnet `event_system` into an Lwt `Lwt_engine.t`.

Use it like:

           class lwt_engine esys =
           object
             inherit Lwt_engine.abstract
             inherit Uq_lwt.lwt_backend esys
           end

(We've intentionally left out this definition to avoid any build dependency on Lwt. Also note that `Lwt_engine` is in the package `lwt.unix`.)

Now, activate this Lwt engine (event loop):

          Lwt_engine.set (new lwt_engine esys)

Note that Lwt can only deal with one event loop at a time, and the new event loop will be used for all Lwt code.

It is, unfortunately, necessary that you use the Lwt main loop (`Lwt_main.run` or `Lwt_unix.run`), because otherwise some hook functions are never executed (and execution will hang).

For an example, see `tests/equeue/manual/relay.ml` in the distribution tarball.

Netplex users: If you want to use `lwt_engine` for driving the event loop of the container, you can do so by overriding the processor hooks `container_event_system` and `container_run`, e.g.

        method container_event_system () =
          let esys = Unixqueue.create_unix_event_system() in
          Lwt_engine.set (new lwt_engine esys);
          esys

        method container_run esys =
          Lwt_main.run <something>

The Lwt thread `<something>` must at least run until the container is shut down. You can catch this moment by also defining the `shutdown` method.

    method iter : bool -> unit

    method private cleanup : unit

    method private register_readable : Unix.file_descr -> (unit -> unit) -> unit Lazy.t

    method private register_writable : Unix.file_descr -> (unit -> unit) -> unit Lazy.t

    method private register_timer : float -> bool -> (unit -> unit) -> unit Lazy.t