- Timestamp:
- Mar 27, 2020, 3:33:19 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r164 r165 228 228 } 229 229 230 func (dc *downstreamConn) readMessages(ch chan<- downstreamIncomingMessage) error {230 func (dc *downstreamConn) readMessages(ch chan<- event) error { 231 231 for { 232 232 msg, err := dc.irc.ReadMessage() … … 241 241 } 242 242 243 ch <- downstreamIncomingMessage{msg, dc}243 ch <- eventDownstreamMessage{msg, dc} 244 244 } 245 245 -
trunk/server.go
r154 r165 120 120 dc.logger.Print(err) 121 121 } else { 122 if err := dc.readMessages(dc.user. downstreamIncoming); err != nil {122 if err := dc.readMessages(dc.user.events); err != nil { 123 123 dc.logger.Print(err) 124 124 } -
trunk/upstream.go
r163 r165 1168 1168 } 1169 1169 1170 func (uc *upstreamConn) readMessages(ch chan<- upstreamIncomingMessage) error {1170 func (uc *upstreamConn) readMessages(ch chan<- event) error { 1171 1171 for { 1172 1172 msg, err := uc.irc.ReadMessage() … … 1181 1181 } 1182 1182 1183 ch <- upstreamIncomingMessage{msg, uc}1183 ch <- eventUpstreamMessage{msg, uc} 1184 1184 } 1185 1185 -
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.