Bladeren bron

refactor: hub reorganized a little

boyska 5 jaren geleden
bovenliggende
commit
34593d380a
3 gewijzigde bestanden met toevoegingen van 30 en 26 verwijderingen
  1. 1 1
      cmd/circologd/http.go
  2. 1 1
      cmd/circologd/main.go
  3. 28 24
      hub.go

+ 1 - 1
cmd/circologd/http.go

@@ -9,7 +9,7 @@ import (
 	"gopkg.in/mcuadros/go-syslog.v2/format"
 )
 
-func setupHttp(hub circolog.Hub) {
+func setupHTTP(hub circolog.Hub) {
 	http.HandleFunc("/", getHTTPHandler(hub))
 	http.HandleFunc("/ws", getWSHandler(hub))
 }

+ 1 - 1
cmd/circologd/main.go

@@ -46,7 +46,7 @@ func main() {
 	}
 	go hub.Run()
 
-	setupHttp(hub)
+	setupHTTP(hub)
 	if *querySocket != "" {
 		fmt.Printf("Binding address `%s` [http]\n", *querySocket)
 		unixListener, err := net.Listen("unix", *querySocket)

+ 28 - 24
hub.go

@@ -38,35 +38,39 @@ func NewHub(ringBufSize int) Hub {
 	}
 }
 
+func (h *Hub) register(cl Client) {
+	if _, ok := h.clients[cl]; !ok {
+		if !cl.Nofollow { // we won't need it in future
+			h.clients[cl] = true
+		}
+
+		circbufDoExit := false
+		h.circbuf.Do(func(x interface{}) {
+			if circbufDoExit {
+				return
+			}
+			if x != nil {
+				select { // send with short timeout
+				case cl.Messages <- x.(format.LogParts):
+					break
+				case <-time.After(500 * time.Millisecond):
+					circbufDoExit = true
+					break
+				}
+			}
+		})
+		if cl.Nofollow {
+			close(cl.Messages)
+		}
+	}
+}
+
 // Run is hub main loop; keeps everything going
 func (h *Hub) Run() {
 	for {
 		select {
 		case cl := <-h.Register:
-			if _, ok := h.clients[cl]; !ok {
-				if !cl.Nofollow { // we won't need it in future
-					h.clients[cl] = true
-				}
-
-				circbuf_do_exit := false
-				h.circbuf.Do(func(x interface{}) {
-					if circbuf_do_exit {
-						return
-					}
-					if x != nil {
-						select { // send with short timeout
-						case cl.Messages <- x.(format.LogParts):
-							break
-						case <-time.After(500 * time.Millisecond):
-							circbuf_do_exit = true
-							break
-						}
-					}
-				})
-				if cl.Nofollow {
-					close(cl.Messages)
-				}
-			}
+			h.register(cl)
 		case cl := <-h.Unregister:
 			_, ok := h.clients[cl]
 			if ok {