in grpc-xds/control-plane-go/pkg/xds/snapshot_cache.go [181:201]
func findServerListenerAddresses(names []string) ([]EndpointAddress, error) {
var addresses []EndpointAddress
for _, name := range names {
if strings.HasPrefix(name, serverListenerNamePrefix) && len(name) > len(serverListenerNamePrefix) {
hostPort := strings.SplitAfter(name, serverListenerNamePrefix)[1]
host, portStr, err := net.SplitHostPort(hostPort)
if err != nil {
return nil, fmt.Errorf("could not extract host and port from server Listener name=%s: %w", name, err)
}
port, err := strconv.ParseUint(portStr, 10, 32)
if err != nil {
return nil, fmt.Errorf("could not extract port from server Listener name: %w", err)
}
addresses = append(addresses, EndpointAddress{
Host: host,
Port: uint32(port),
})
}
}
return addresses, nil
}