1
Fork 0

Keep track of total numbers sent.

This commit is contained in:
Juliusz Chroboczek 2020-05-31 23:54:55 +02:00
parent 8fb8f7b7d5
commit a6db6b105d
2 changed files with 21 additions and 3 deletions

View File

@ -10,9 +10,11 @@ type Estimator struct {
interval time.Duration
count uint32
mu sync.Mutex
rate uint32
time time.Time
mu sync.Mutex
totalBytes uint32
totalPackets uint32
rate uint32
time time.Time
}
func New(interval time.Duration) *Estimator {
@ -34,6 +36,8 @@ func (e *Estimator) swap(now time.Time) {
}
func (e *Estimator) Accumulate(count uint32) {
atomic.AddUint32(&e.totalBytes, count)
atomic.AddUint32(&e.totalPackets, 1)
atomic.AddUint32(&e.count, count)
}
@ -52,3 +56,9 @@ func (e *Estimator) Estimate() uint32 {
defer e.mu.Unlock()
return e.estimate(now)
}
func (e *Estimator) Totals() (uint32, uint32) {
b := atomic.LoadUint32(&e.totalBytes)
p := atomic.LoadUint32(&e.totalPackets)
return p, b
}

View File

@ -18,4 +18,12 @@ func TestEstimator(t *testing.T) {
if rate != 42+128 {
t.Errorf("Expected %v, got %v", 42+128, rate)
}
totalP, totalB := e.Totals()
if totalP != 2 {
t.Errorf("Expected 2, got %v", totalP)
}
if totalB != 42+128 {
t.Errorf("Expected %v, got %v", 42+128, totalB)
}
}