Module type S.DISSEMINATION

Dissemination of messages within a group

type nid
type node
type view
type mid
type seen
val init_seen : int -> seen

init_seen len initializes the queue of last seen messages with maximum queue length len.

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 already seen 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.