selector.go 501 B

123456789101112131415161718192021222324252627282930313233
  1. package registry
  2. const (
  3. StatusHealthy = "healthy"
  4. StatusDead = "dead"
  5. )
  6. type (
  7. Selector struct {
  8. registry Registry
  9. }
  10. )
  11. func (selector *Selector) Select(name string) (node *ServiceNode, err error) {
  12. var (
  13. nodes []*ServiceNode
  14. )
  15. if nodes, err = selector.registry.Get(name); err != nil {
  16. return
  17. }
  18. for _, node = range nodes {
  19. if node.Status == StatusHealthy {
  20. break
  21. }
  22. }
  23. return
  24. }
  25. func NewSelector(registry Registry) *Selector {
  26. return &Selector{
  27. registry: registry,
  28. }
  29. }