Module P2p_ringcast.Make

Functor building an implementation of Ringcast given a Node_id, Node, gossip View, and Msg_id.

Parameters

Signature

type nid
type node
type view
type mid
type seen
include P2p.S.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 S.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
val forward : view:view -> seen:seen -> mid:mid -> src:node -> me:node -> fanout:int -> view * seen