Module Dtools.Init

module Init: sig .. end

Initialisation management module. Allow to define procedures that must be executed at start up, and procedures that are to be executed at exit to have a clean quit.


type t 
val start : t

Root start atom

val stop : t

Root stop atom

val make : ?name:string ->
?depends:t list ->
?triggers:t list ->
?after:t list ->
?before:t list -> (unit -> unit) -> t

Define a init atom associated with the given (unit -> unit) procedure, which eventualy depends on others atoms (these atoms will be executed before the one currently defined) an triggers other atoms (these atoms will be executed after the one currently defined). after and before allow to register the currently defined atom in the depend and triggers lists of other atoms.

val at_start : ?name:string ->
?depends:t list ->
?triggers:t list ->
?after:t list ->
?before:t list -> (unit -> unit) -> t

Same as make plus a shortcut for "after Init.start".

val at_stop : ?name:string ->
?depends:t list ->
?triggers:t list ->
?after:t list ->
?before:t list -> (unit -> unit) -> t

Same as make plus a shortcut for "before Init.stop".

val exec : t -> unit

Launch the execution of a given init atom.

exception Root_prohibited of [ `Both | `Group | `User ]
val init : ?prohibit_root:bool -> (unit -> unit) -> unit

This fuction must be used to launch the main procedure of the program. It first execute the registered start atoms, then call the main procedure, then execute the registered stop atoms. Exceptions raised by the main procedure are catched, in order to close properly even in such cases. Exceptions are raised again after cleaning. When invoqued with ~prohibit_root:true, it checks for root access rights (euid, egid) and exit in this case.

exception StartError of exn
exception StopError of exn
val conf : Dtools.Conf.ut
val conf_daemon : bool Dtools.Conf.t
val conf_daemon_pidfile : bool Dtools.Conf.t
val conf_daemon_pidfile_path : string Dtools.Conf.t
val conf_concurrent : bool Dtools.Conf.t
val conf_trace : bool Dtools.Conf.t
val conf_catch_exn : bool Dtools.Conf.t
val args : (string list * Stdlib.Arg.spec * string) list

A set of command line options to be used with the Arg module.