func printConns(n inet.Network) string { s := fmt.Sprintf("Connections in %s:\n", n) for _, c := range n.Conns() { s = s + fmt.Sprintf("- %s\n", c) } return s }
// PeersToPBPeers converts given []peer.Peer into a set of []*Message_Peer, // which can be written to a message and sent out. the key thing this function // does (in addition to PeersToPBPeers) is set the ConnectionType with // information from the given inet.Network. func PeerInfosToPBPeers(n inet.Network, peers []peer.PeerInfo) []*Message_Peer { pbps := RawPeerInfosToPBPeers(peers) for i, pbp := range pbps { c := ConnectionType(n.Connectedness(peers[i].ID)) pbp.Connection = &c } return pbps }
func (p *printer) NetworkConns(ni inet.Network) { fmt.Fprintf(p.w, "%s connected to:\n", ni.LocalPeer()) for _, c := range ni.Conns() { fmt.Fprintf(p.w, "\t%s (addr: %s)\n", c.RemotePeer(), c.RemoteMultiaddr()) } fmt.Fprintf(p.w, "\n") }
func expectConnectedness(t *testing.T, a, b inet.Network, expected inet.Connectedness) { es := "%s is connected to %s, but Connectedness incorrect. %s %s" if a.Connectedness(b.LocalPeer()) != expected { t.Errorf(es, a, b, printConns(a), printConns(b)) } // test symmetric case if b.Connectedness(a.LocalPeer()) != expected { t.Errorf(es, b, a, printConns(b), printConns(a)) } }
// New constructs and sets up a new *BasicHost with given Network func New(net inet.Network, opts ...interface{}) *BasicHost { h := &BasicHost{ network: net, mux: msmux.NewMultistreamMuxer(), bwc: metrics.NewBandwidthCounter(), } h.proc = goprocess.WithTeardown(func() error { if h.natmgr != nil { h.natmgr.Close() } return h.Network().Close() }) // setup host services h.ids = identify.NewIDService(h) muxh := h.Mux().Handle handle := func(s inet.Stream) { muxh(s) } h.relay = relay.NewRelayService(h, handle) for _, o := range opts { switch o := o.(type) { case Option: switch o { case NATPortMap: h.natmgr = newNatManager(h) } case metrics.Reporter: h.bwc = o } } net.SetConnHandler(h.newConnHandler) net.SetStreamHandler(h.newStreamHandler) return h }
func (mn *mocknet) LinksBetweenNets(n1, n2 inet.Network) []Link { return mn.LinksBetweenPeers(n1.LocalPeer(), n2.LocalPeer()) }
func (mn *mocknet) DisconnectNets(n1, n2 inet.Network) error { return n1.ClosePeer(n2.LocalPeer()) }
func (mn *mocknet) ConnectNets(a, b inet.Network) (inet.Conn, error) { return a.DialPeer(mn.ctx, b.LocalPeer()) }
func (mn *mocknet) UnlinkNets(n1, n2 inet.Network) error { return mn.UnlinkPeers(n1.LocalPeer(), n2.LocalPeer()) }
func (nn *metricsNotifiee) Disconnected(n inet.Network, v inet.Conn) { peersTotalGauge(n.LocalPeer()).Set(float64(len(n.Conns()))) }
func DivulgeAddresses(a, b inet.Network) { id := a.LocalPeer() addrs := a.Peerstore().Addrs(id) b.Peerstore().AddAddrs(id, addrs, peer.PermanentAddrTTL) }