package octez-libs

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Make.DSource

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.