func (mn *mocknet) AddPeerWithPeerstore(p peer.ID, ps peer.Peerstore) (host.Host, error) { n, err := newPeernet(mn.ctx, mn, p, ps) if err != nil { return nil, err } h := bhost.New(n) mn.proc.AddChild(n.proc) mn.Lock() mn.nets[n.peer] = n mn.hosts[n.peer] = h mn.Unlock() return h, nil }
// isolates the complex initialization steps func constructPeerHost(ctx context.Context, id peer.ID, ps peer.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (p2phost.Host, error) { // no addresses to begin with. we'll start later. network, err := swarm.NewNetwork(ctx, nil, id, ps, bwr) if err != nil { return nil, err } for _, f := range fs { network.Swarm().Filters.AddDialFilter(f) } host := p2pbhost.New(network, p2pbhost.NATPortMap, bwr) return host, nil }