Changeset 231 in code for trunk


Ignore:
Timestamp:
Apr 6, 2020, 4:31:48 PM (5 years ago)
Author:
contact
Message:

Remove downstreamConn.ringConsumers

We no longer need long-lived ring buffer consumers now that
upstreamConn.produce dispatches messages to downstream connections.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r230 r231  
    6767        network     *network // can be nil
    6868
    69         ringConsumers map[*network]*RingConsumer
    7069        ourMessages map[*irc.Message]struct{}
    7170        caps        map[string]bool
     
    8079        logger := &prefixLogger{srv.Logger, fmt.Sprintf("downstream %q: ", netConn.RemoteAddr())}
    8180        dc := &downstreamConn{
    82                 conn:          *newConn(srv, netConn, logger),
    83                 id:            id,
    84                 ringConsumers: make(map[*network]*RingConsumer),
    85                 ourMessages:   make(map[*irc.Message]struct{}),
    86                 caps:          make(map[string]bool),
     81                conn:        *newConn(srv, netConn, logger),
     82                id:          id,
     83                ourMessages: make(map[*irc.Message]struct{}),
     84                caps:        make(map[string]bool),
    8785        }
    8886        dc.hostname = netConn.RemoteAddr().String()
     
    684682
    685683                consumer := net.ring.NewConsumer(seqPtr)
    686                 dc.ringConsumers[net] = consumer
    687684
    688685                // TODO: this means all history is lost when trying to send it while the
  • trunk/ring.go

    r229 r231  
    3535        r.buffer[i] = msg
    3636        r.cur++
     37}
     38
     39func (r *Ring) Cur() uint64 {
     40        return r.cur
    3741}
    3842
  • trunk/upstream.go

    r227 r231  
    13681368
    13691369        uc.forEachDownstream(func(dc *downstreamConn) {
    1370                 dc.sendFromUpstream(dc.ringConsumers[uc.network].Consume(), uc)
     1370                dc.sendFromUpstream(msg, uc)
    13711371        })
    13721372}
  • trunk/user.go

    r228 r231  
    304304                        dc := e.dc
    305305
    306                         for net, rc := range dc.ringConsumers {
    307                                 seq := rc.Close()
     306                        dc.forEachNetwork(func(net *network) {
     307                                seq := net.ring.Cur()
    308308                                net.history[dc.clientName] = seq
    309                         }
     309                        })
    310310
    311311                        for i := range u.downstreamConns {
     
    350350        }
    351351
    352         u.forEachDownstream(func(dc *downstreamConn) {
    353                 if dc.network == nil {
    354                         dc.ringConsumers[network] = network.ring.NewConsumer(nil)
    355                 }
    356         })
    357 
    358352        u.networks = append(u.networks, network)
    359353
     
    376370                                dc.Close()
    377371                        }
    378                         delete(dc.ringConsumers, net)
    379372                })
    380373
Note: See TracChangeset for help on using the changeset viewer.