Module type S.GOSSIP_DISSEM

Gossip + Dissemination combined

type nid
type node
type view
type mid
type seen
include GOSSIP with type node := node and type view := view
type node
type 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 DISSEMINATION with type nid := nid and type node := node and type view := view and type mid := mid and type seen := seen
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.