association_stats.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. nPacketsReceived uint64
  9. nPacketsSent uint64
  10. nDATAs uint64
  11. nSACKsReceived uint64
  12. nSACKsSent uint64
  13. nT3Timeouts uint64
  14. nAckTimeouts uint64
  15. nFastRetrans uint64
  16. }
  17. func (s *associationStats) incPacketsReceived() {
  18. atomic.AddUint64(&s.nPacketsReceived, 1)
  19. }
  20. func (s *associationStats) getNumPacketsReceived() uint64 {
  21. return atomic.LoadUint64(&s.nPacketsReceived)
  22. }
  23. func (s *associationStats) incPacketsSent() {
  24. atomic.AddUint64(&s.nPacketsSent, 1)
  25. }
  26. func (s *associationStats) getNumPacketsSent() uint64 {
  27. return atomic.LoadUint64(&s.nPacketsSent)
  28. }
  29. func (s *associationStats) incDATAs() {
  30. atomic.AddUint64(&s.nDATAs, 1)
  31. }
  32. func (s *associationStats) getNumDATAs() uint64 {
  33. return atomic.LoadUint64(&s.nDATAs)
  34. }
  35. func (s *associationStats) incSACKsReceived() {
  36. atomic.AddUint64(&s.nSACKsReceived, 1)
  37. }
  38. func (s *associationStats) getNumSACKsReceived() uint64 {
  39. return atomic.LoadUint64(&s.nSACKsReceived)
  40. }
  41. func (s *associationStats) incSACKsSent() {
  42. atomic.AddUint64(&s.nSACKsSent, 1)
  43. }
  44. func (s *associationStats) getNumSACKsSent() uint64 {
  45. return atomic.LoadUint64(&s.nSACKsSent)
  46. }
  47. func (s *associationStats) incT3Timeouts() {
  48. atomic.AddUint64(&s.nT3Timeouts, 1)
  49. }
  50. func (s *associationStats) getNumT3Timeouts() uint64 {
  51. return atomic.LoadUint64(&s.nT3Timeouts)
  52. }
  53. func (s *associationStats) incAckTimeouts() {
  54. atomic.AddUint64(&s.nAckTimeouts, 1)
  55. }
  56. func (s *associationStats) getNumAckTimeouts() uint64 {
  57. return atomic.LoadUint64(&s.nAckTimeouts)
  58. }
  59. func (s *associationStats) incFastRetrans() {
  60. atomic.AddUint64(&s.nFastRetrans, 1)
  61. }
  62. func (s *associationStats) getNumFastRetrans() uint64 {
  63. return atomic.LoadUint64(&s.nFastRetrans)
  64. }
  65. func (s *associationStats) reset() {
  66. atomic.StoreUint64(&s.nPacketsReceived, 0)
  67. atomic.StoreUint64(&s.nPacketsSent, 0)
  68. atomic.StoreUint64(&s.nDATAs, 0)
  69. atomic.StoreUint64(&s.nSACKsReceived, 0)
  70. atomic.StoreUint64(&s.nSACKsSent, 0)
  71. atomic.StoreUint64(&s.nT3Timeouts, 0)
  72. atomic.StoreUint64(&s.nAckTimeouts, 0)
  73. atomic.StoreUint64(&s.nFastRetrans, 0)
  74. }