1
0

latency.go 434 B

123456789101112131415161718192021222324252627282930
  1. package peer
  2. import (
  3. "sync"
  4. )
  5. type Latency interface {
  6. Value() uint64
  7. }
  8. type HasLatency interface {
  9. ConnectionLatency() Latency
  10. HandshakeLatency() Latency
  11. }
  12. type AverageLatency struct {
  13. access sync.Mutex
  14. value uint64
  15. }
  16. func (al *AverageLatency) Update(newValue uint64) {
  17. al.access.Lock()
  18. defer al.access.Unlock()
  19. al.value = (al.value + newValue*2) / 3
  20. }
  21. func (al *AverageLatency) Value() uint64 {
  22. return al.value
  23. }