From 2180d41780dc53060c2ad3ec49b246c72adf40a8 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Sun, 21 Jun 2020 14:09:54 -0700 Subject: [PATCH] Move Agent stats to its own file No changes, just bringing down the size of the Agent --- agent.go | 107 ----------------------------------------------- agent_stats.go | 110 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 107 deletions(-) create mode 100644 agent_stats.go diff --git a/agent.go b/agent.go index b55f185..c2e3f7a 100644 --- a/agent.go +++ b/agent.go @@ -991,110 +991,3 @@ func (a *Agent) closeMulticastConn() { } } } - -// GetCandidatePairsStats returns a list of candidate pair stats -func (a *Agent) GetCandidatePairsStats() []CandidatePairStats { - resultChan := make(chan []CandidatePairStats, 1) - err := a.run(func(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) - } - resultChan <- result - }) - if err != nil { - a.log.Errorf("error getting candidate pairs stats %v", err) - return []CandidatePairStats{} - } - return <-resultChan -} - -// GetLocalCandidatesStats returns a list of local candidates stats -func (a *Agent) GetLocalCandidatesStats() []CandidateStats { - resultChan := make(chan []CandidateStats, 1) - err := a.run(func(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) - } - } - resultChan <- result - }) - if err != nil { - a.log.Errorf("error getting candidate pairs stats %v", err) - return []CandidateStats{} - } - return <-resultChan -} - -// GetRemoteCandidatesStats returns a list of remote candidates stats -func (a *Agent) GetRemoteCandidatesStats() []CandidateStats { - resultChan := make(chan []CandidateStats, 1) - err := a.run(func(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) - } - } - resultChan <- result - }) - if err != nil { - a.log.Errorf("error getting candidate pairs stats %v", err) - return []CandidateStats{} - } - return <-resultChan -} diff --git a/agent_stats.go b/agent_stats.go new file mode 100644 index 0000000..9e87c59 --- /dev/null +++ b/agent_stats.go @@ -0,0 +1,110 @@ +package ice + +import "time" + +// GetCandidatePairsStats returns a list of candidate pair stats +func (a *Agent) GetCandidatePairsStats() []CandidatePairStats { + resultChan := make(chan []CandidatePairStats, 1) + err := a.run(func(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) + } + resultChan <- result + }) + if err != nil { + a.log.Errorf("error getting candidate pairs stats %v", err) + return []CandidatePairStats{} + } + return <-resultChan +} + +// GetLocalCandidatesStats returns a list of local candidates stats +func (a *Agent) GetLocalCandidatesStats() []CandidateStats { + resultChan := make(chan []CandidateStats, 1) + err := a.run(func(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) + } + } + resultChan <- result + }) + if err != nil { + a.log.Errorf("error getting candidate pairs stats %v", err) + return []CandidateStats{} + } + return <-resultChan +} + +// GetRemoteCandidatesStats returns a list of remote candidates stats +func (a *Agent) GetRemoteCandidatesStats() []CandidateStats { + resultChan := make(chan []CandidateStats, 1) + err := a.run(func(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) + } + } + resultChan <- result + }) + if err != nil { + a.log.Errorf("error getting candidate pairs stats %v", err) + return []CandidateStats{} + } + return <-resultChan +}