selector.go 539 B

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