# Module Lwt_engine

    module Lwt_engine: sig .. end

Lwt unix main loop engine

###### Events

    type event

Type of events. An event represent a callback registered to be called when some event occurs.

    val stop_event : event -> unit

`stop_event event` stops the given event.

    val fake_event : event

Event which does nothing when stopped.

###### Event loop functions

    val iter : bool -> unit

`iter block` performs one iteration of the main loop. If `block` is `true` the function must blocks until one event become available, otherwise it should just check for available events and return immediatly.

    val on_readable : Unix.file_descr -> (event -> unit) -> event

`on_readable fd f` calls `f` each time `fd` becomes readable.

    val on_writable : Unix.file_descr -> (event -> unit) -> event

`on_readable fd f` calls `f` each time `fd` becomes writable.

    val on_timer : float -> bool -> (event -> unit) -> event

`on_timer delay repeat f` calls `f` one time after `delay` seconds. If `repeat` is `true` then `f` is called each `delay` seconds, otherwise it is called only one time.

    val readable_count : unit -> int

Returns the number of events waiting for a file descriptor to become readable.

    val writable_count : unit -> int

Returns the number of events waiting for a file descriptor to become writable.

    val timer_count : unit -> int

Returns the number of registered timers.

    val fake_io : Unix.file_descr -> unit

Simulates activity on the given file descriptor.

###### Engines

An engine represent a set of functions used to register different kind of callbacks for different kind of events.

    class virtual abstract : object .. end

Abstract class for engines.

    class type t = object .. end

Type of engines.

###### Predefined engines

    type ev_loop

Type of libev loops.

    class libev : object .. end

Engine based on libev.

    class select : t

Engine based on `Unix.select`.

    class virtual select_based : object .. end

Abstract class for engines based on a select-like function.

    class virtual poll_based : object .. end

Abstract class for engines based on a poll-like function.

###### The current engine

    val get : unit -> t

`get ()` returns the engine currently in use.

    val set : ?transfer:bool -> ?destroy:bool -> #t -> unit

`set ?transfer ?destroy engine` replaces the current engine by the given one.

If `transfer` is `true` (the default) all events from the current engine are transferred to the new one.

If `destroy` is `true` (the default) then the current engine is destroyed before being replaced.