Prechádzať zdrojové kódy

added handler logic

0xdcarns 2 rokov pred
rodič
commit
6ef2b27c89
2 zmenil súbory, kde vykonal 35 pridanie a 8 odobranie
  1. 31 0
      queue/handlers.go
  2. 4 8
      queue/queue.go

+ 31 - 0
queue/handlers.go

@@ -0,0 +1,31 @@
+package queue
+
+import (
+	"github.com/gorilla/websocket"
+	"github.com/gravitl/netmaker/models"
+)
+
+// holds a map of funcs
+// based on topic to handle an event
+var handlerFuncs map[int]func(*models.Event)
+
+// initializes the map of functions
+func initializeHandlers() {
+	handlerFuncs = make(map[int]func(*models.Event))
+	handlerFuncs[models.EventTopics.NodeUpdate] = nodeUpdate
+	handlerFuncs[models.EventTopics.Test] = test
+}
+
+func test(e *models.Event) {
+	val, ok := ConnMap.Load(e.ID)
+	if ok {
+		conn := val.(*websocket.Conn)
+		if conn != nil {
+			conn.WriteMessage(websocket.TextMessage, []byte("success"))
+		}
+	}
+}
+
+func nodeUpdate(e *models.Event) {
+
+}

+ 4 - 8
queue/queue.go

@@ -6,7 +6,6 @@ import (
 	"fmt"
 
 	"github.com/enriquebris/goconcurrentqueue"
-	"github.com/gorilla/websocket"
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/servercfg"
@@ -31,13 +30,9 @@ func StartQueue(ctx context.Context) {
 				continue
 			}
 			event := msg.(models.Event)
-			switch event.Topic {
-			case models.EventTopics.Test:
-				conn, ok := ConnMap.Load(event.ID)
-				if ok {
-					conn.(*websocket.Conn).WriteMessage(websocket.TextMessage, []byte("success"))
-				}
-			default:
+			if _, ok := handlerFuncs[event.Topic]; ok {
+				handlerFuncs[event.Topic](&event)
+			} else {
 				logger.Log(0, fmt.Sprintf("received an unknown topic %d \n", event.Topic))
 			}
 			logger.Log(3, fmt.Sprintf("queue stats: queued elements %d, openCapacity: %d \n", EventQueue.GetLen(), EventQueue.GetCap()))
@@ -55,4 +50,5 @@ func initQueue() {
 		logger.Log(0, "started queue with dynamic allocation")
 		EventQueue = goconcurrentqueue.NewFIFO()
 	}
+	initializeHandlers()
 }