Changeset 482 in code for trunk/user.go


Ignore:
Timestamp:
Mar 29, 2021, 2:55:57 PM (4 years ago)
Author:
contact
Message:

Simplify network.offlineClients

Replace it with a list of all clients (online or offline).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/user.go

    r480 r482  
    6363        stopped chan struct{}
    6464
    65         conn           *upstreamConn
    66         channels       channelCasemapMap
    67         delivered      deliveredCasemapMap
    68         offlineClients map[string]struct{} // indexed by client name
    69         lastError      error
    70         casemap        casemapping
     65        conn      *upstreamConn
     66        channels  channelCasemapMap
     67        delivered deliveredCasemapMap
     68        clients  map[string]struct{} // indexed by client name
     69        lastError error
     70        casemap   casemapping
    7171}
    7272
     
    7979
    8080        return &network{
    81                 Network:        *record,
    82                 user:           user,
    83                 stopped:        make(chan struct{}),
    84                 channels:       m,
    85                 delivered:      deliveredCasemapMap{newCasemapMap(0)},
    86                 offlineClients: make(map[string]struct{}),
    87                 casemap:        casemapRFC1459,
     81                Network:   *record,
     82                user:      user,
     83                stopped:   make(chan struct{}),
     84                channels:  m,
     85                delivered: deliveredCasemapMap{newCasemapMap(0)},
     86                clients:  make(map[string]struct{}),
     87                casemap:   casemapRFC1459,
    8888        }
    8989}
     
    197197
    198198        net.forEachDownstream(func(dc *downstreamConn) {
    199                 net.offlineClients[dc.clientName] = struct{}{}
    200 
    201199                dc.SendMessage(&irc.Message{
    202200                        Prefix:  dc.prefix(),
     
    449447
    450448                        dc.forEachNetwork(func(network *network) {
     449                                network.clients[dc.clientName] = struct{}{}
    451450                                if network.lastError != nil {
    452451                                        sendServiceNOTICE(dc, fmt.Sprintf("disconnected from %s: %v", network.GetName(), network.lastError))
     
    466465                                }
    467466                        }
    468 
    469                         // Save history if we're the last client with this name
    470                         skipHistory := make(map[*network]bool)
    471                         u.forEachDownstream(func(conn *downstreamConn) {
    472                                 if dc.clientName == conn.clientName {
    473                                         skipHistory[conn.network] = true
    474                                 }
    475                         })
    476 
    477                         dc.forEachNetwork(func(net *network) {
    478                                 if skipHistory[net] || skipHistory[nil] {
    479                                         return
    480                                 }
    481 
    482                                 net.offlineClients[dc.clientName] = struct{}{}
    483                         })
    484467
    485468                        u.forEachUpstream(func(uc *upstreamConn) {
Note: See TracChangeset for help on using the changeset viewer.