Warning: Reason support is experimental. We are looking for beta-tester and contributors.

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.