Module Sihl__.Core_container

include Sihl__.Core_lifecycle
val log_src : Logs.src
exception Exception
type lifecycle = {
type_name : string;
implementation_name : string;
id : int;
dependencies : unit -> lifecycle list;
start : unit -> unit Lwt.t;
stop : unit -> unit Lwt.t;
}
val counter : int Stdlib.ref
val create_lifecycle : ?⁠dependencies:(unit -> lifecycle list) -> ?⁠start:(unit -> unit Lwt.t) -> ?⁠stop:(unit -> unit Lwt.t) -> ?⁠implementation_name:string -> string -> lifecycle
val human_name : lifecycle -> string
val collect_all_lifecycles : lifecycle list -> lifecycle Map.t
val top_sort_lifecycles : lifecycle list -> lifecycle list
module Service = Sihl__.Core_service
val start_services : Sihl__.Core_service.t list -> Sihl__.Core_lifecycle.lifecycle list Lwt.t
val stop_services : Sihl__.Core_service.t list -> unit Lwt.t