Commit d52d20ae authored by Steven Allen's avatar Steven Allen

cleanup update loop

Use range and then trim the meters slice later. It's *much* easier to read.
parent 6c16cea2
......@@ -83,8 +83,9 @@ func (sw *sweeper) update() {
sw.lastUpdateTime = now
timeMultiplier := float64(time.Second) / float64(tdiff)
for i := 0; i < len(sw.meters); i++ {
m := sw.meters[i]
newLen := len(sw.meters)
for i, m := range sw.meters {
total := atomic.LoadUint64(&m.accumulator)
instant := timeMultiplier * float64(total-m.snapshot.Total)
......@@ -135,13 +136,15 @@ func (sw *sweeper) update() {
// Reset the rate, keep the total.
m.snapshot.Rate = 0
newLen--
sw.meters[i] = sw.meters[newLen]
}
// remove it and repeat `i`
sw.meters[i] = sw.meters[len(sw.meters)-1]
sw.meters[len(sw.meters)-1] = nil
sw.meters = sw.meters[:len(sw.meters)-1]
i--
// trim the meter list
for i := newLen; i < len(sw.meters); i++ {
sw.meters[i] = nil
}
sw.meters = sw.meters[:newLen]
}
func (sw *sweeper) Register(m *Meter) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment