158
159
// Lookup finds the host in the ring responsible for serving the given key
160
>
func (r *serviceResolver) Lookup(key string) (membership.HostInfo, error) {
service_resolver.go
161
>
ring, hosts := r.ring()
162
>
addr, found := ring.Lookup(key)
163
>
if !found {
164
r.RequestRefresh()
165
return nil, membership.ErrInsufficientHosts
166
}
168
}
169
170
>
func (r *serviceResolver) LookupN(key string, n int) []membership.HostInfo {
service_resolver.go
171
>
if n <= 0 {
172
return nil
173
}
175
>
addrs := ring.LookupN(key, n)
176
>
if len(addrs) == 0 {
177
r.RequestRefresh()
178
return nil
179
}
180
>
return util.MapSlice(addrs, func(addr string) membership.HostInfo { return hosts[addr] })
service_resolver.go
181
}
182