package octez-libs

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
include Distributed.Process with type 'a io = 'a Lwt.t
exception Init_more_than_once
exception InvalidNode of Distributed.Node_id.t
exception Local_only_mode
type 'a t
type 'a io = 'a Lwt.t
type message_type
type 'a matcher_list
type monitor_ref
type monitor_reason =
  1. | Normal of Distributed.Process_id.t
  2. | Exception of Distributed.Process_id.t * exn
  3. | UnkownNodeId of Distributed.Process_id.t * Distributed.Node_id.t
  4. | NoProcess of Distributed.Process_id.t
module Remote_config : sig ... end
module Local_config : sig ... end
type node_config =
  1. | Local of Local_config.t
  2. | Remote of Remote_config.t
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
type proc_rep =
  1. | Fun of unit -> unit t
  2. | Registered of string
val register : string -> (Distributed.Process_id.t -> unit -> unit t) -> unit t
val fail : exn -> 'a t
val catch : (unit -> 'a t) -> (exn -> 'a t) -> 'a t
val spawn : ?monitor:bool -> Distributed.Node_id.t -> proc_rep -> Distributed.Process_id.t -> (Distributed.Process_id.t * monitor_ref option) t
val case : (message_type -> (unit -> 'a t) option) -> 'a matcher_list
val termination_case : (monitor_reason -> 'a t) -> 'a matcher_list
val (|.) : 'a matcher_list -> 'a matcher_list -> 'a matcher_list
val receive : ?timeout_duration:float -> 'a matcher_list -> 'a option t
val receive_loop : ?timeout_duration:float -> bool matcher_list -> unit t
val send : Distributed.Process_id.t -> message_type -> unit t
val (>!) : Distributed.Process_id.t -> message_type -> unit t
val broadcast : Distributed.Node_id.t -> message_type -> unit t
val monitor : Distributed.Process_id.t -> monitor_ref t
val unmonitor : monitor_ref -> unit t
val get_self_pid : Distributed.Process_id.t t
val get_self_node : Distributed.Node_id.t t
val get_remote_node : string -> Distributed.Node_id.t option t
val get_remote_nodes : Distributed.Node_id.t list t
val add_remote_node : string -> int -> string -> Distributed.Node_id.t t
val remove_remote_node : Distributed.Node_id.t -> unit t
val lift_io : 'a io -> 'a t
val run_node : ?process:(unit -> unit t) -> node_config -> unit io
module M : Communication.Distributed_wrapper.Enriched_message_type with type 'a step = 'a Msg.step with type 'a request = 'a Msg.request with type 'a reply = 'a Msg.reply

Additional monadic interface

val let* : 'a t -> ('a -> 'b t) -> 'b t
val let+ : 'a t -> ('a -> 'b) -> 'b t
val mapM : ('a -> 'b t) -> 'a list -> 'b list t
val dmap : pids:Distributed.Process_id.t list -> request:('a -> index:int -> 'step M.request) -> reply:('step M.reply -> (unit -> 'b t) option) -> 'a list -> 'b list t

dmap ~pids ~request ~reply l sends requests built by applying request to the elements of l to the workers pids and waits to receive a valid reply from each worker.

val handle_request : Distributed.Process_id.t -> step:'step M.step -> handler:('step M.request -> (unit -> ('step M.reply * 'b) t) option) -> 'b t

handle_request master_pid ~setp ~handler l waits to receive a request for a given step, process it through handler and sends the reply to master_pid. The handler might also return some additional data ('b) that isn't meant to be sent back to the master, but rather kept by the worker for future computation.

OCaml

Innovation. Community. Security.