Changeset 137 in code for trunk/downstream.go


Ignore:
Timestamp:
Mar 23, 2020, 3:05:00 PM (5 years ago)
Author:
contact
Message:

Add user.{add,remove}Downstream

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r136 r137  
    305305
    306306        if u := dc.user; u != nil {
    307                 u.lock.Lock()
    308                 for i := range u.downstreamConns {
    309                         if u.downstreamConns[i] == dc {
    310                                 u.downstreamConns = append(u.downstreamConns[:i], u.downstreamConns[i+1:]...)
    311                                 break
    312                         }
    313                 }
    314                 u.lock.Unlock()
     307                u.removeDownstream(dc)
    315308        }
    316309
     
    661654        dc.logger.Printf("registration complete for user %q", dc.username)
    662655
    663         dc.user.lock.Lock()
    664         firstDownstream := len(dc.user.downstreamConns) == 0
    665         dc.user.downstreamConns = append(dc.user.downstreamConns, dc)
    666         dc.user.lock.Unlock()
     656        firstDownstream := dc.user.addDownstream(dc)
    667657
    668658        dc.SendMessage(&irc.Message{
     
    708698                historyName := dc.rawUsername
    709699
     700                // TODO: need to take dc.network into account here
    710701                var seqPtr *uint64
    711702                if firstDownstream {
     
    718709                }
    719710
     711                // TODO: we need to create a consumer when adding networks on-the-fly
    720712                consumer, ch := uc.ring.NewConsumer(seqPtr)
    721713                go func() {
     
    735727                        seq := consumer.Close()
    736728
     729                        // TODO: need to take dc.network into account here
    737730                        dc.user.lock.Lock()
    738731                        lastDownstream := len(dc.user.downstreamConns) == 0
Note: See TracChangeset for help on using the changeset viewer.