Module Make.Pub
include P2p.S.GOSSIP_DISSEM with type nid := nid and type node := node and type view := view and type mid := mid
include P2p.S.GOSSIP with type node := node and type view := view
val initiate : view:view -> xview:view -> me:node -> view_len:int -> xchg_len:int -> node option * view * view
initiate ~view ~xview ~me ~xchg_len ?distance
initiates gossip exchange.- parameter ~view
current view
- parameter ~xview
external view from another gossip protocol
- parameter ~me
this node
- parameter ~xchg_len
number of items in gossip exchange
- returns
(Some dst, xchg, view)
:
- parameter dst
destination node
- parameter xchg
items to send to
dst
- parameter view
updated view of this node
val respond : view:view -> xview:view -> recvd:view -> src:node -> me:node -> view_len:int -> xchg_len:int -> view
respond ~view ~xview ~recvd ~src ~me ~xchg_len
responds to a gossip exchange.- parameter ~view
current view
- parameter ~xview
external view from another gossip protocol
- parameter ~recvd
received items
- parameter ~src
source node
- parameter ~me
this node
- parameter ~xchg_len
number of items in gossip exchange
- returns
updated view
val merge : view:view -> xview:view -> sent:view -> recvd:view -> src:node -> me:node -> view_len:int -> xchg_len:int -> view
merge ~view ~view_len ~sent ~recvd ~xchg_len ~me
merges received entries during a gossip exchange.- parameter ~view
current view
- parameter ~view_len
number of items in
view
- parameter ~sent
sent items
- parameter ~recvd
received items
- parameter ~xchg_len
number of items in gossip exchange
- parameter ~me
this node
- returns
updated view
include P2p.S.DISSEMINATION with type nid := nid and type node := node and type view := view and type mid := mid and type seen := seen
val init_seen : int -> seen
init_seen len
initializes the queue of last seen messages with maximum queue lengthlen
.
val forward : view:view -> seen:seen -> mid:mid -> src:node -> me:node -> fanout:int -> view * seen
Select recipients to forward an incoming or outgoing message. If
mid
was alreadyseen
before, the message is not fowarded.- parameter ~view
Current view.
- parameter ~seen
Queue of last seen message IDs.
- parameter ~mid
Message ID.
- parameter ~src
Source node.
- parameter ~fanout
Number of nodes to select for forwarding.
- returns
(dsts, seen)
- parameter dsts
The list of destinations to forward to.
- parameter seen
Updated seen queue with
mid
added.