relay.go 804 B

12345678910111213141516171819202122232425262728293031
  1. package mq
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gravitl/netmaker/logic"
  6. "github.com/gravitl/netmaker/models"
  7. "github.com/gravitl/netmaker/servercfg"
  8. "golang.org/x/exp/slog"
  9. )
  10. // PubPeerUpdate publishes a peer update to the client
  11. // relay is set to a newly created relay node or nil for other peer updates
  12. func PubPeerUpdate(client *models.Client) {
  13. peers := logic.GetPeerUpdate(&client.Host)
  14. p := models.PeerAction{
  15. Action: models.UpdatePeer,
  16. Peers: peers,
  17. }
  18. if len(p.Peers) == 0 {
  19. slog.Info("no peer update for host", "host", client.Host.Name)
  20. return
  21. }
  22. data, err := json.Marshal(p)
  23. if err != nil {
  24. slog.Error("marshal peer update", "error", err)
  25. return
  26. }
  27. publish(&client.Host, fmt.Sprintf("peer/host/%s/%s", client.Host.ID.String(), servercfg.GetServer()), data)
  28. }