package h2mux import ( "sync/atomic" ) type AtomicCounter struct { count uint64 } func NewAtomicCounter(initCount uint64) *AtomicCounter { return &AtomicCounter{count: initCount} } func (c *AtomicCounter) IncrementBy(number uint64) { atomic.AddUint64(&c.count, number) } // Count returns the current value of counter and reset it to 0 func (c *AtomicCounter) Count() uint64 { return atomic.SwapUint64(&c.count, 0) } // Value returns the current value of counter func (c *AtomicCounter) Value() uint64 { return atomic.LoadUint64(&c.count) }