github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/network/topology.go (about) 1 package network 2 3 import ( 4 "github.com/onflow/flow-go/model/flow" 5 ) 6 7 // Topology provides a subset of nodes which a given node should directly connect in order to form a connected mesh 8 // for epidemic message dissemination (e.g., publisher and subscriber model). 9 type Topology interface { 10 // Fanout receives IdentityList of entire network and constructs the fanout IdentityList of the node. 11 // A node directly communicates with its fanout IdentityList on epidemic dissemination 12 // of the messages (i.e., publish and multicast). 13 // 14 // Fanout is not concurrency safe. It is responsibility of caller to lock for it (if needed). 15 Fanout(ids flow.IdentityList) flow.IdentityList 16 }