association_stats.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. package sctp
  4. import (
  5. "sync/atomic"
  6. )
  7. type associationStats struct {
  8. nDATAs uint64
  9. nSACKs uint64
  10. nT3Timeouts uint64
  11. nAckTimeouts uint64
  12. nFastRetrans uint64
  13. }
  14. func (s *associationStats) incDATAs() {
  15. atomic.AddUint64(&s.nDATAs, 1)
  16. }
  17. func (s *associationStats) getNumDATAs() uint64 {
  18. return atomic.LoadUint64(&s.nDATAs)
  19. }
  20. func (s *associationStats) incSACKs() {
  21. atomic.AddUint64(&s.nSACKs, 1)
  22. }
  23. func (s *associationStats) getNumSACKs() uint64 {
  24. return atomic.LoadUint64(&s.nSACKs)
  25. }
  26. func (s *associationStats) incT3Timeouts() {
  27. atomic.AddUint64(&s.nT3Timeouts, 1)
  28. }
  29. func (s *associationStats) getNumT3Timeouts() uint64 {
  30. return atomic.LoadUint64(&s.nT3Timeouts)
  31. }
  32. func (s *associationStats) incAckTimeouts() {
  33. atomic.AddUint64(&s.nAckTimeouts, 1)
  34. }
  35. func (s *associationStats) getNumAckTimeouts() uint64 {
  36. return atomic.LoadUint64(&s.nAckTimeouts)
  37. }
  38. func (s *associationStats) incFastRetrans() {
  39. atomic.AddUint64(&s.nFastRetrans, 1)
  40. }
  41. func (s *associationStats) getNumFastRetrans() uint64 {
  42. return atomic.LoadUint64(&s.nFastRetrans)
  43. }
  44. func (s *associationStats) reset() {
  45. atomic.StoreUint64(&s.nDATAs, 0)
  46. atomic.StoreUint64(&s.nSACKs, 0)
  47. atomic.StoreUint64(&s.nT3Timeouts, 0)
  48. atomic.StoreUint64(&s.nAckTimeouts, 0)
  49. atomic.StoreUint64(&s.nFastRetrans, 0)
  50. }