summaryrefslogtreecommitdiffstats
path: root/vendor/gopkg.in/olahol/melody.v1/hub.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/olahol/melody.v1/hub.go')
-rw-r--r--vendor/gopkg.in/olahol/melody.v1/hub.go80
1 files changed, 0 insertions, 80 deletions
diff --git a/vendor/gopkg.in/olahol/melody.v1/hub.go b/vendor/gopkg.in/olahol/melody.v1/hub.go
deleted file mode 100644
index edc6337d..00000000
--- a/vendor/gopkg.in/olahol/melody.v1/hub.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package melody
-
-import (
- "sync"
-)
-
-type hub struct {
- sessions map[*Session]bool
- broadcast chan *envelope
- register chan *Session
- unregister chan *Session
- exit chan *envelope
- open bool
- rwmutex *sync.RWMutex
-}
-
-func newHub() *hub {
- return &hub{
- sessions: make(map[*Session]bool),
- broadcast: make(chan *envelope),
- register: make(chan *Session),
- unregister: make(chan *Session),
- exit: make(chan *envelope),
- open: true,
- rwmutex: &sync.RWMutex{},
- }
-}
-
-func (h *hub) run() {
-loop:
- for {
- select {
- case s := <-h.register:
- h.rwmutex.Lock()
- h.sessions[s] = true
- h.rwmutex.Unlock()
- case s := <-h.unregister:
- if _, ok := h.sessions[s]; ok {
- h.rwmutex.Lock()
- delete(h.sessions, s)
- h.rwmutex.Unlock()
- }
- case m := <-h.broadcast:
- h.rwmutex.RLock()
- for s := range h.sessions {
- if m.filter != nil {
- if m.filter(s) {
- s.writeMessage(m)
- }
- } else {
- s.writeMessage(m)
- }
- }
- h.rwmutex.RUnlock()
- case m := <-h.exit:
- h.rwmutex.Lock()
- for s := range h.sessions {
- s.writeMessage(m)
- delete(h.sessions, s)
- s.Close()
- }
- h.open = false
- h.rwmutex.Unlock()
- break loop
- }
- }
-}
-
-func (h *hub) closed() bool {
- h.rwmutex.RLock()
- defer h.rwmutex.RUnlock()
- return !h.open
-}
-
-func (h *hub) len() int {
- h.rwmutex.RLock()
- defer h.rwmutex.RUnlock()
-
- return len(h.sessions)
-}