Browse Source

added server action queue

0xdcarns 3 years ago
parent
commit
f9b3d46c20
1 changed files with 36 additions and 0 deletions
  1. 36 0
      serverctl/serverq.go

+ 36 - 0
serverctl/serverq.go

@@ -0,0 +1,36 @@
+package serverctl
+
+import (
+	"fmt"
+
+	"github.com/gravitl/netmaker/models"
+)
+
+// ServerQueue - holds data to be updated across the server
+var ServerQueue chan ServerUpdateData
+
+func init() {
+	ServerQueue = make(chan ServerUpdateData, 100)
+}
+
+// ServerUpdateData - contains data to configure server
+// and if it should set peers
+type ServerUpdateData struct {
+	RemakePeers bool        `json:"remakepeers" bson:"remakepeers"`
+	ServerNode  models.Node `json:"servernode" bson:"servernode"`
+}
+
+// Push - Pushes ServerUpdateData to be used later
+func Push(serverData ServerUpdateData) {
+	ServerQueue <- serverData
+}
+
+// Pop - fetches first available data from queue
+func Pop() (ServerUpdateData, error) {
+	select {
+	case serverData := <-ServerQueue:
+		return serverData, nil
+	default:
+		return ServerUpdateData{}, fmt.Errorf("empty server queue")
+	}
+}