Changeset 165 in code for trunk/user.go
- Timestamp:
- Mar 27, 2020, 3:33:19 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/user.go
r144 r165 8 8 ) 9 9 10 type upstreamIncomingMessage struct { 10 type event interface{} 11 12 type eventUpstreamMessage struct { 11 13 msg *irc.Message 12 14 uc *upstreamConn 13 15 } 14 16 15 type downstreamIncomingMessage struct {17 type eventDownstreamMessage struct { 16 18 msg *irc.Message 17 19 dc *downstreamConn … … 59 61 net.lock.Unlock() 60 62 61 if err := uc.readMessages(net.user. upstreamIncoming); err != nil {63 if err := uc.readMessages(net.user.events); err != nil { 62 64 uc.logger.Printf("failed to handle messages: %v", err) 63 65 } … … 80 82 srv *Server 81 83 82 upstreamIncoming chan upstreamIncomingMessage 83 downstreamIncoming chan downstreamIncomingMessage 84 events chan event 84 85 85 86 lock sync.Mutex … … 90 91 func newUser(srv *Server, record *User) *user { 91 92 return &user{ 92 User: *record, 93 srv: srv, 94 upstreamIncoming: make(chan upstreamIncomingMessage, 64), 95 downstreamIncoming: make(chan downstreamIncomingMessage, 64), 93 User: *record, 94 srv: srv, 95 events: make(chan event, 64), 96 96 } 97 97 } … … 150 150 u.lock.Unlock() 151 151 152 for {153 s elect{154 case upstreamMsg := <-u.upstreamIncoming:155 msg, uc := upstreamMsg.msg, upstreamMsg.uc152 for e := range u.events { 153 switch e := e.(type) { 154 case eventUpstreamMessage: 155 msg, uc := e.msg, e.uc 156 156 if uc.closed { 157 157 uc.logger.Printf("ignoring message on closed connection: %v", msg) … … 161 161 uc.logger.Printf("failed to handle message %q: %v", msg, err) 162 162 } 163 case downstreamMsg := <-u.downstreamIncoming:164 msg, dc := downstreamMsg.msg, downstreamMsg.dc163 case eventDownstreamMessage: 164 msg, dc := e.msg, e.dc 165 165 if dc.isClosed() { 166 166 dc.logger.Printf("ignoring message on closed connection: %v", msg) … … 175 175 dc.Close() 176 176 } 177 default: 178 u.srv.Logger.Printf("received unknown event type: %T", e) 177 179 } 178 180 }
Note:
See TracChangeset
for help on using the changeset viewer.