March Docs

PeerRegistry

PeerRegistry: the net-kernel's one-connection-per-peer table.

After a successful handshake, a peer is registered under its NodeId along with the socket fd of its connection. Re-registering the same NodeId replaces the prior entry (the newer connection wins) — so there is at most one live connection per peer, the invariant the L2 net-kernel maintains.

Types

typePeerPeer = { node_id : String, identity : NodeIdentity.Identity, fd : Int }#
typeRegistryRegistry = Registry(Map(String, Peer))#

Functions

fnaddadd(reg : Registry, peer : Peer) : Registry#
fncontainscontains(reg : Registry, node_id : String) : Bool#
fnemptyempty() : Registry do Registry(Map.empty()) end#
fnlookuplookup(reg : Registry, node_id : String) : Option(Peer)#
fnpeerspeers(reg : Registry) : List(Peer)#
fnremoveremove(reg : Registry, node_id : String) : Registry#
fnsizesize(reg : Registry) : Int#