stats_go.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. //go:build !js
  4. // +build !js
  5. package webrtc
  6. // GetConnectionStats is a helper method to return the associated stats for a given PeerConnection
  7. func (r StatsReport) GetConnectionStats(conn *PeerConnection) (PeerConnectionStats, bool) {
  8. statsID := conn.getStatsID()
  9. stats, ok := r[statsID]
  10. if !ok {
  11. return PeerConnectionStats{}, false
  12. }
  13. pcStats, ok := stats.(PeerConnectionStats)
  14. if !ok {
  15. return PeerConnectionStats{}, false
  16. }
  17. return pcStats, true
  18. }
  19. // GetDataChannelStats is a helper method to return the associated stats for a given DataChannel
  20. func (r StatsReport) GetDataChannelStats(dc *DataChannel) (DataChannelStats, bool) {
  21. statsID := dc.getStatsID()
  22. stats, ok := r[statsID]
  23. if !ok {
  24. return DataChannelStats{}, false
  25. }
  26. dcStats, ok := stats.(DataChannelStats)
  27. if !ok {
  28. return DataChannelStats{}, false
  29. }
  30. return dcStats, true
  31. }
  32. // GetICECandidateStats is a helper method to return the associated stats for a given ICECandidate
  33. func (r StatsReport) GetICECandidateStats(c *ICECandidate) (ICECandidateStats, bool) {
  34. statsID := c.statsID
  35. stats, ok := r[statsID]
  36. if !ok {
  37. return ICECandidateStats{}, false
  38. }
  39. candidateStats, ok := stats.(ICECandidateStats)
  40. if !ok {
  41. return ICECandidateStats{}, false
  42. }
  43. return candidateStats, true
  44. }
  45. // GetICECandidatePairStats is a helper method to return the associated stats for a given ICECandidatePair
  46. func (r StatsReport) GetICECandidatePairStats(c *ICECandidatePair) (ICECandidatePairStats, bool) {
  47. statsID := c.statsID
  48. stats, ok := r[statsID]
  49. if !ok {
  50. return ICECandidatePairStats{}, false
  51. }
  52. candidateStats, ok := stats.(ICECandidatePairStats)
  53. if !ok {
  54. return ICECandidatePairStats{}, false
  55. }
  56. return candidateStats, true
  57. }
  58. // GetCertificateStats is a helper method to return the associated stats for a given Certificate
  59. func (r StatsReport) GetCertificateStats(c *Certificate) (CertificateStats, bool) {
  60. statsID := c.statsID
  61. stats, ok := r[statsID]
  62. if !ok {
  63. return CertificateStats{}, false
  64. }
  65. certificateStats, ok := stats.(CertificateStats)
  66. if !ok {
  67. return CertificateStats{}, false
  68. }
  69. return certificateStats, true
  70. }
  71. // GetCodecStats is a helper method to return the associated stats for a given Codec
  72. func (r StatsReport) GetCodecStats(c *RTPCodecParameters) (CodecStats, bool) {
  73. statsID := c.statsID
  74. stats, ok := r[statsID]
  75. if !ok {
  76. return CodecStats{}, false
  77. }
  78. codecStats, ok := stats.(CodecStats)
  79. if !ok {
  80. return CodecStats{}, false
  81. }
  82. return codecStats, true
  83. }