summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/ice/v2/agent_stats.go
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2021-11-29 01:46:27 +0100
committerkali kaneko (leap communications) <kali@leap.se>2021-11-29 18:14:16 +0100
commit18f52af5be3a9a0c73811706108f790d65ee9c67 (patch)
treee13cbacb47d56919caa9c44a2b45dec1497a7860 /vendor/github.com/pion/ice/v2/agent_stats.go
parentebcef0d57b6ecb5a40c6579f6be07182dd3033ba (diff)
[pkg] update vendor
Diffstat (limited to 'vendor/github.com/pion/ice/v2/agent_stats.go')
-rw-r--r--vendor/github.com/pion/ice/v2/agent_stats.go113
1 files changed, 113 insertions, 0 deletions
diff --git a/vendor/github.com/pion/ice/v2/agent_stats.go b/vendor/github.com/pion/ice/v2/agent_stats.go
new file mode 100644
index 0000000..18d9ed8
--- /dev/null
+++ b/vendor/github.com/pion/ice/v2/agent_stats.go
@@ -0,0 +1,113 @@
+package ice
+
+import (
+ "context"
+ "time"
+)
+
+// GetCandidatePairsStats returns a list of candidate pair stats
+func (a *Agent) GetCandidatePairsStats() []CandidatePairStats {
+ var res []CandidatePairStats
+ err := a.run(a.context(), func(ctx context.Context, agent *Agent) {
+ result := make([]CandidatePairStats, 0, len(agent.checklist))
+ for _, cp := range agent.checklist {
+ stat := CandidatePairStats{
+ Timestamp: time.Now(),
+ LocalCandidateID: cp.local.ID(),
+ RemoteCandidateID: cp.remote.ID(),
+ State: cp.state,
+ Nominated: cp.nominated,
+ // PacketsSent uint32
+ // PacketsReceived uint32
+ // BytesSent uint64
+ // BytesReceived uint64
+ // LastPacketSentTimestamp time.Time
+ // LastPacketReceivedTimestamp time.Time
+ // FirstRequestTimestamp time.Time
+ // LastRequestTimestamp time.Time
+ // LastResponseTimestamp time.Time
+ // TotalRoundTripTime float64
+ // CurrentRoundTripTime float64
+ // AvailableOutgoingBitrate float64
+ // AvailableIncomingBitrate float64
+ // CircuitBreakerTriggerCount uint32
+ // RequestsReceived uint64
+ // RequestsSent uint64
+ // ResponsesReceived uint64
+ // ResponsesSent uint64
+ // RetransmissionsReceived uint64
+ // RetransmissionsSent uint64
+ // ConsentRequestsSent uint64
+ // ConsentExpiredTimestamp time.Time
+ }
+ result = append(result, stat)
+ }
+ res = result
+ })
+ if err != nil {
+ a.log.Errorf("error getting candidate pairs stats %v", err)
+ return []CandidatePairStats{}
+ }
+ return res
+}
+
+// GetLocalCandidatesStats returns a list of local candidates stats
+func (a *Agent) GetLocalCandidatesStats() []CandidateStats {
+ var res []CandidateStats
+ err := a.run(a.context(), func(ctx context.Context, agent *Agent) {
+ result := make([]CandidateStats, 0, len(agent.localCandidates))
+ for networkType, localCandidates := range agent.localCandidates {
+ for _, c := range localCandidates {
+ stat := CandidateStats{
+ Timestamp: time.Now(),
+ ID: c.ID(),
+ NetworkType: networkType,
+ IP: c.Address(),
+ Port: c.Port(),
+ CandidateType: c.Type(),
+ Priority: c.Priority(),
+ // URL string
+ RelayProtocol: "udp",
+ // Deleted bool
+ }
+ result = append(result, stat)
+ }
+ }
+ res = result
+ })
+ if err != nil {
+ a.log.Errorf("error getting candidate pairs stats %v", err)
+ return []CandidateStats{}
+ }
+ return res
+}
+
+// GetRemoteCandidatesStats returns a list of remote candidates stats
+func (a *Agent) GetRemoteCandidatesStats() []CandidateStats {
+ var res []CandidateStats
+ err := a.run(a.context(), func(ctx context.Context, agent *Agent) {
+ result := make([]CandidateStats, 0, len(agent.remoteCandidates))
+ for networkType, localCandidates := range agent.remoteCandidates {
+ for _, c := range localCandidates {
+ stat := CandidateStats{
+ Timestamp: time.Now(),
+ ID: c.ID(),
+ NetworkType: networkType,
+ IP: c.Address(),
+ Port: c.Port(),
+ CandidateType: c.Type(),
+ Priority: c.Priority(),
+ // URL string
+ RelayProtocol: "udp",
+ }
+ result = append(result, stat)
+ }
+ }
+ res = result
+ })
+ if err != nil {
+ a.log.Errorf("error getting candidate pairs stats %v", err)
+ return []CandidateStats{}
+ }
+ return res
+}