mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
Keep track of total numbers sent.
This commit is contained in:
parent
8fb8f7b7d5
commit
a6db6b105d
2 changed files with 21 additions and 3 deletions
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue