Commit a6db6b10 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Keep track of total numbers sent.

parent 8fb8f7b7
......@@ -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
}
......@@ -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)
}
}
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