// HasConsistentTransport returns true if the address 'a' shares a // protocol set with any address in the green set. This is used // to check if a given address might be one of the addresses a peer is // listening on. func HasConsistentTransport(a ma.Multiaddr, green []ma.Multiaddr) bool { protosMatch := func(a, b []ma.Protocol) bool { if len(a) != len(b) { return false } for i, p := range a { if b[i].Code != p.Code { return false } } return true } protos := a.Protocols() for _, ga := range green { if protosMatch(protos, ga.Protocols()) { return true } } return false }
func (ptrn *pattern) Matches(a ma.Multiaddr) bool { ok, rem := ptrn.partialMatch(a.Protocols()) return ok && len(rem) == 0 }
func (p Base) Matches(a ma.Multiaddr) bool { pcs := a.Protocols() return pcs[0].Code == int(p) && len(pcs) == 1 }