tps.go 920 B
package metrics
import (
"sync/atomic"
)
// public api method to proactively retrieve the received TPS value
func GetReceivedTPS() uint64 {
return atomic.LoadUint64(&measuredReceivedTPS)
}
// counter for the received TPS
var tpsReceivedSinceLastMeasurement uint64
// measured value of the received TPS
var measuredReceivedTPS uint64
// increases the received TPS counter
func increaseReceivedTPSCounter() {
atomic.AddUint64(&tpsReceivedSinceLastMeasurement, 1)
}
// measures the received TPS value
func measureReceivedTPS() {
// sample the current counter value into a measured TPS value
sampledTPS := atomic.LoadUint64(&tpsReceivedSinceLastMeasurement)
// store the measured value
atomic.StoreUint64(&measuredReceivedTPS, sampledTPS)
// reset the counter
atomic.StoreUint64(&tpsReceivedSinceLastMeasurement, 0)
// trigger events for outside listeners
Events.ReceivedTPSUpdated.Trigger(sampledTPS)
}