this repo has no description
1open Types
2
3type 'a transition = {
4 new_state : 'a;
5 broadcasts : protocol_msg list;
6 events : node_event list;
7}
8
9val no_change : 'a -> 'a transition
10val node_id_of_msg : protocol_msg -> node_id
11val incarnation_of_msg : protocol_msg -> incarnation option
12
13val handle_alive :
14 self:node_id ->
15 member_snapshot ->
16 protocol_msg ->
17 now:Mtime.span ->
18 member_snapshot transition
19
20val handle_suspect :
21 self:node_id ->
22 member_snapshot ->
23 protocol_msg ->
24 now:Mtime.span ->
25 member_snapshot transition
26
27val handle_dead :
28 member_snapshot ->
29 protocol_msg ->
30 now:Mtime.span ->
31 member_snapshot transition
32
33val suspicion_timeout : config -> node_count:int -> float
34val retransmit_limit : config -> node_count:int -> int
35
36val next_probe_target :
37 self:node_id ->
38 probe_index:int ->
39 members:node_info list ->
40 (node_info * int) option
41
42val invalidates : newer:protocol_msg -> older:protocol_msg -> bool
43
44val merge_member_state :
45 local:member_snapshot -> remote:member_snapshot -> member_snapshot
46
47val select_indirect_targets :
48 self:node_id ->
49 exclude:node_id ->
50 count:int ->
51 members:node_info list ->
52 node_info list