Swim.Cluster

swim · API reference

type t = {
  protocol : Protocol.t;
  sw : Eio.Switch.t;
  net : [ `Generic ] Eio.Net.ty Eio.Resource.t;
}
val create : 
  sw:Eio.Switch.t ->
  env:
    < clock : float Eio.Time.clock_ty Eio.Time.clock
      ; mono_clock : Eio.Time.Mono.ty Eio.Time.Mono.t
      ; net : [> [ `Generic ] Eio.Net.ty ] Eio.Net.t
      ; secure_random : Eio.Flow.source_ty Eio.Flow.source.. >
      Types.env ->
  config:Types.config ->
  (t, [> `Invalid_key ]) result
val start : t -> unit
val shutdown : t -> unit
val local_node : t -> Types.node_info
val members : t -> Types.node_info list
val member_count : t -> int
val events : t -> Types.node_event Eio.Stream.t
val stats : t -> Types.stats
val add_member : t -> Types.node_info -> unit
val remove_member : t -> Types.node_id -> bool
val join : 
  t ->
  seed_nodes:string list ->
  (unit, [> `No_seeds_reachable ]) result
val broadcast : t -> topic:string -> payload:string -> unit
val send : 
  t ->
  target:Types.node_id ->
  topic:string ->
  payload:string ->
  (unit, [> `Unknown_node ]) result
val send_to_addr : 
  t ->
  addr:Eio.Net.Sockaddr.datagram ->
  topic:string ->
  payload:string ->
  unit
val on_message : t -> (Types.node_info -> string -> string -> unit) -> unit
val is_alive : t -> Types.node_id -> bool
val find_node : t -> Types.node_id -> Types.node_info option
val is_healthy : t -> bool