Changeset 166 in code for trunk/user.go


Ignore:
Timestamp:
Mar 27, 2020, 4:21:05 PM (5 years ago)
Author:
contact
Message:

Add eventDownstreamConnected

In a later commit, we'll be able to move part of downstreamConn.register
into the user goroutine to prevent races.

References: https://todo.sr.ht/~emersion/soju/22

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/user.go

    r165 r166  
    1818        msg *irc.Message
    1919        dc  *downstreamConn
     20}
     21
     22type eventDownstreamConnected struct {
     23        dc *downstreamConn
    2024}
    2125
     
    161165                                uc.logger.Printf("failed to handle message %q: %v", msg, err)
    162166                        }
     167                case eventDownstreamConnected:
     168                        dc := e.dc
     169                        u.lock.Lock()
     170                        u.downstreamConns = append(u.downstreamConns, dc)
     171                        u.lock.Unlock()
    163172                case eventDownstreamMessage:
    164173                        msg, dc := e.msg, e.dc
     
    181190}
    182191
    183 func (u *user) addDownstream(dc *downstreamConn) (first bool) {
    184         u.lock.Lock()
    185         first = len(dc.user.downstreamConns) == 0
    186         u.downstreamConns = append(u.downstreamConns, dc)
    187         u.lock.Unlock()
    188         return first
    189 }
    190 
    191192func (u *user) removeDownstream(dc *downstreamConn) {
    192193        u.lock.Lock()
Note: See TracChangeset for help on using the changeset viewer.