serverq.go 633 B

1234567891011121314151617181920212223242526272829
  1. package serverctl
  2. import (
  3. "fmt"
  4. "github.com/gravitl/netmaker/models"
  5. )
  6. // ServerQueue - holds data to be updated across the server
  7. var ServerQueue chan models.ServerUpdateData
  8. func init() {
  9. ServerQueue = make(chan models.ServerUpdateData, 100)
  10. }
  11. // Push - Pushes ServerUpdateData to be used later
  12. func Push(serverData models.ServerUpdateData) {
  13. ServerQueue <- serverData
  14. }
  15. // Pop - fetches first available data from queue
  16. func Pop() (models.ServerUpdateData, error) {
  17. select {
  18. case serverData := <-ServerQueue:
  19. return serverData, nil
  20. default:
  21. return models.ServerUpdateData{}, fmt.Errorf("empty server queue")
  22. }
  23. }