6 "github.com/go-kit/kit/endpoint"
7 "github.com/go-kit/kit/sd"
10 // NewRoundRobin returns a load balancer that returns services in sequence.
11 func NewRoundRobin(s sd.Endpointer) Balancer {
18 type roundRobin struct {
23 func (rr *roundRobin) Endpoint() (endpoint.Endpoint, error) {
24 endpoints, err := rr.s.Endpoints()
28 if len(endpoints) <= 0 {
29 return nil, ErrNoEndpoints
31 old := atomic.AddUint64(&rr.c, 1) - 1
32 idx := old % uint64(len(endpoints))
33 return endpoints[idx], nil