service.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package registry
  2. import (
  3. "errors"
  4. "strconv"
  5. )
  6. var (
  7. ErrAddressNotExists = errors.New("address not exists")
  8. )
  9. type (
  10. Addr struct {
  11. Address string `json:"address"`
  12. Port int `json:"port"`
  13. }
  14. ServiceNode struct {
  15. ID string `json:"id"`
  16. Name string `json:"name"`
  17. Version string `json:"version"`
  18. Status string `json:"status"`
  19. Address string `json:"address"`
  20. Port int `json:"port"`
  21. Addresses map[string]Addr `json:"addresses"`
  22. Metadata map[string]string `json:"metadata"`
  23. }
  24. )
  25. func (addr Addr) String() string {
  26. return addr.Address + ":" + strconv.Itoa(addr.Port)
  27. }
  28. func (s *ServiceNode) GetAddress(name string) (addr Addr, err error) {
  29. if s.Addresses == nil {
  30. err = ErrAddressNotExists
  31. return
  32. }
  33. var (
  34. ok bool
  35. )
  36. if addr, ok = s.Addresses[name]; !ok {
  37. err = ErrAddressNotExists
  38. }
  39. return
  40. }
  41. func (s *ServiceNode) SetAddress(name string, address string, port int) {
  42. if s.Addresses == nil {
  43. s.Addresses = make(map[string]Addr)
  44. }
  45. s.Addresses[name] = Addr{
  46. Address: address,
  47. Port: port,
  48. }
  49. }