Changeset 168 in code for trunk/user.go
- Timestamp:
- Mar 27, 2020, 6:17:58 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/user.go
r167 r168 92 92 events chan event 93 93 94 lock sync.Mutex95 94 networks []*network 96 95 downstreamConns []*downstreamConn … … 106 105 107 106 func (u *user) forEachNetwork(f func(*network)) { 108 u.lock.Lock()109 107 for _, network := range u.networks { 110 108 f(network) 111 109 } 112 u.lock.Unlock()113 110 } 114 111 115 112 func (u *user) forEachUpstream(f func(uc *upstreamConn)) { 116 u.lock.Lock()117 113 for _, network := range u.networks { 118 114 uc := network.upstream() … … 122 118 f(uc) 123 119 } 124 u.lock.Unlock()125 120 } 126 121 127 122 func (u *user) forEachDownstream(f func(dc *downstreamConn)) { 128 u.lock.Lock()129 123 for _, dc := range u.downstreamConns { 130 124 f(dc) 131 125 } 132 u.lock.Unlock()133 126 } 134 127 … … 149 142 } 150 143 151 u.lock.Lock()152 144 for _, record := range networks { 153 145 network := newNetwork(u, &record) … … 156 148 go network.run() 157 149 } 158 u.lock.Unlock()159 150 160 151 for e := range u.events { … … 171 162 case eventDownstreamConnected: 172 163 dc := e.dc 173 u.lock.Lock() 164 165 if err := dc.welcome(); err != nil { 166 dc.logger.Printf("failed to handle new registered connection: %v", err) 167 break 168 } 169 174 170 u.downstreamConns = append(u.downstreamConns, dc) 175 u.lock.Unlock()176 171 case eventDownstreamDisconnected: 177 172 dc := e.dc 178 u.lock.Lock()179 173 for i := range u.downstreamConns { 180 174 if u.downstreamConns[i] == dc { … … 183 177 } 184 178 } 185 u.lock.Unlock()186 179 case eventDownstreamMessage: 187 180 msg, dc := e.msg, e.dc … … 221 214 }) 222 215 223 u.lock.Lock()224 216 u.networks = append(u.networks, network) 225 u.lock.Unlock()226 217 227 218 go network.run()
Note:
See TracChangeset
for help on using the changeset viewer.