CandidatePairState is public now

Use more appropiate naming
This commit is contained in:
Hugo Arregui
2019-06-22 11:55:06 +00:00
committed by Hugo Arregui
parent 935aca0809
commit da599f54ff
4 changed files with 50 additions and 30 deletions
+7 -4
View File
@@ -469,13 +469,16 @@ func (a *Agent) setSelectedPair(p *candidatePair) {
func (a *Agent) pingAllCandidates() {
for _, p := range a.checklist {
if p.state != candidatePairStateChecking {
if p.state == CandidatePairStateWaiting {
p.state = CandidatePairStateInProgress
} else if p.state != CandidatePairStateInProgress {
continue
}
if p.bindingRequestCount > a.maxBindingRequests {
a.log.Tracef("max requests reached for pair %s, marking it as failed\n", p)
p.state = candidatePairStateFailed
p.state = CandidatePairStateFailed
} else {
a.selector.PingCandidate(p.local, p.remote)
p.bindingRequestCount++
@@ -486,7 +489,7 @@ func (a *Agent) pingAllCandidates() {
func (a *Agent) getBestAvailableCandidatePair() *candidatePair {
var best *candidatePair
for _, p := range a.checklist {
if p.state == candidatePairStateFailed {
if p.state == CandidatePairStateFailed {
continue
}
@@ -502,7 +505,7 @@ func (a *Agent) getBestAvailableCandidatePair() *candidatePair {
func (a *Agent) getBestValidCandidatePair() *candidatePair {
var best *candidatePair
for _, p := range a.checklist {
if p.state != candidatePairStateValid {
if p.state != CandidatePairStateSucceeded {
continue
}
+2 -22
View File
@@ -6,32 +6,12 @@ import (
"github.com/pion/stun"
)
type candidatePairState int
const (
candidatePairStateChecking candidatePairState = iota + 1
candidatePairStateFailed
candidatePairStateValid
)
func (c candidatePairState) String() string {
switch c {
case candidatePairStateChecking:
return "checking"
case candidatePairStateFailed:
return "failed"
case candidatePairStateValid:
return "valid"
}
return "Unknown candidate pair state"
}
func newCandidatePair(local, remote Candidate, controlling bool) *candidatePair {
return &candidatePair{
iceRoleControlling: controlling,
remote: remote,
local: local,
state: candidatePairStateChecking,
state: CandidatePairStateWaiting,
}
}
@@ -41,7 +21,7 @@ type candidatePair struct {
remote Candidate
local Candidate
bindingRequestCount uint16
state candidatePairState
state CandidatePairState
}
func (p *candidatePair) String() string {
+37
View File
@@ -0,0 +1,37 @@
package ice
// CandidatePairState represent the ICE candidate pair state
type CandidatePairState int
const (
// CandidatePairStateWaiting means a check has not been performed for
// this pair
CandidatePairStateWaiting = iota + 1
// CandidatePairStateInProgress means a check has been sent for this pair,
// but the transaction is in progress.
CandidatePairStateInProgress
// CandidatePairStateFailed means a check for this pair was already done
// and failed, either never producing any response or producing an unrecoverable
// failure response.
CandidatePairStateFailed
// CandidatePairStateSucceeded means a check for this pair was already
// done and produced a successful result.
CandidatePairStateSucceeded
)
func (c CandidatePairState) String() string {
switch c {
case CandidatePairStateWaiting:
return "waiting"
case CandidatePairStateInProgress:
return "in-progress"
case CandidatePairStateFailed:
return "failed"
case CandidatePairStateSucceeded:
return "succeded"
}
return "Unknown candidate pair state"
}
+4 -4
View File
@@ -126,7 +126,7 @@ func (s *controllingSelector) HandleBindingRequest(m *stun.Message, local, remot
return
}
if p.state == candidatePairStateValid && s.nominatedPair == nil && s.agent.selectedPair == nil {
if p.state == CandidatePairStateSucceeded && s.nominatedPair == nil && s.agent.selectedPair == nil {
bestPair := s.agent.getBestAvailableCandidatePair()
if bestPair == nil {
s.log.Tracef("No best pair available\n")
@@ -164,7 +164,7 @@ func (s *controllingSelector) HandleSucessResponse(m *stun.Message, local, remot
return
}
p.state = candidatePairStateValid
p.state = CandidatePairStateSucceeded
s.log.Tracef("Found valid candidate pair: %s", p)
if pendingRequest.isUseCandidate && s.agent.selectedPair == nil {
s.agent.setSelectedPair(p)
@@ -256,7 +256,7 @@ func (s *controlledSelector) HandleSucessResponse(m *stun.Message, local, remote
return
}
p.state = candidatePairStateValid
p.state = CandidatePairStateSucceeded
s.log.Tracef("Found valid candidate pair: %s", p)
}
@@ -272,7 +272,7 @@ func (s *controlledSelector) HandleBindingRequest(m *stun.Message, local, remote
if useCandidate {
// https://tools.ietf.org/html/rfc8445#section-7.3.1.5
if p.state == candidatePairStateValid {
if p.state == CandidatePairStateSucceeded {
// If the state of this pair is Succeeded, it means that the check
// previously sent by this pair produced a successful response and
// generated a valid pair (Section 7.2.5.3.2). The agent sets the