hub.go - hugo - [fork] hugo port for 9front
HTML git clone https://git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
hub.go (1430B)
---
1 // Copyright 2015 The Hugo Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13
14 package livereload
15
16 type hub struct {
17 // Registered connections.
18 connections map[*connection]bool
19
20 // Inbound messages from the connections.
21 broadcast chan []byte
22
23 // Register requests from the connections.
24 register chan *connection
25
26 // Unregister requests from connections.
27 unregister chan *connection
28 }
29
30 var wsHub = hub{
31 broadcast: make(chan []byte),
32 register: make(chan *connection),
33 unregister: make(chan *connection),
34 connections: make(map[*connection]bool),
35 }
36
37 func (h *hub) run() {
38 for {
39 select {
40 case c := <-h.register:
41 h.connections[c] = true
42 case c := <-h.unregister:
43 delete(h.connections, c)
44 c.close()
45 case m := <-h.broadcast:
46 for c := range h.connections {
47 select {
48 case c.send <- m:
49 default:
50 delete(h.connections, c)
51 c.close()
52 }
53 }
54 }
55 }
56 }