summaryrefslogtreecommitdiffstats
path: root/app/web_hub.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/web_hub.go')
-rw-r--r--app/web_hub.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/app/web_hub.go b/app/web_hub.go
index a0663459a..f65683f70 100644
--- a/app/web_hub.go
+++ b/app/web_hub.go
@@ -8,6 +8,7 @@ import (
"hash/fnv"
"runtime"
"runtime/debug"
+ "sync/atomic"
l4g "github.com/alecthomas/log4go"
@@ -18,6 +19,7 @@ import (
type Hub struct {
connections []*WebConn
+ count int64
register chan *WebConn
unregister chan *WebConn
broadcast chan *model.WebSocketEvent
@@ -43,12 +45,12 @@ func NewWebHub() *Hub {
func TotalWebsocketConnections() int {
// This is racy, but it's only used for reporting information
// so it's probably OK
- count := 0
+ count := int64(0)
for _, hub := range hubs {
- count = count + len(hub.connections)
+ count = count + atomic.LoadInt64(&hub.count)
}
- return count
+ return int(count)
}
func HubStart() {
@@ -248,6 +250,7 @@ func (h *Hub) Start() {
select {
case webCon := <-h.register:
h.connections = append(h.connections, webCon)
+ atomic.StoreInt64(&h.count, int64(len(h.connections)))
case webCon := <-h.unregister:
userId := webCon.UserId