summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/ice/v2/candidatetype.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/ice/v2/candidatetype.go')
-rw-r--r--vendor/github.com/pion/ice/v2/candidatetype.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/vendor/github.com/pion/ice/v2/candidatetype.go b/vendor/github.com/pion/ice/v2/candidatetype.go
new file mode 100644
index 0000000..376c408
--- /dev/null
+++ b/vendor/github.com/pion/ice/v2/candidatetype.go
@@ -0,0 +1,62 @@
+package ice
+
+// CandidateType represents the type of candidate
+type CandidateType byte
+
+// CandidateType enum
+const (
+ CandidateTypeUnspecified CandidateType = iota
+ CandidateTypeHost
+ CandidateTypeServerReflexive
+ CandidateTypePeerReflexive
+ CandidateTypeRelay
+)
+
+// String makes CandidateType printable
+func (c CandidateType) String() string {
+ switch c {
+ case CandidateTypeHost:
+ return "host"
+ case CandidateTypeServerReflexive:
+ return "srflx"
+ case CandidateTypePeerReflexive:
+ return "prflx"
+ case CandidateTypeRelay:
+ return "relay"
+ case CandidateTypeUnspecified:
+ return "Unknown candidate type"
+ }
+ return "Unknown candidate type"
+}
+
+// Preference returns the preference weight of a CandidateType
+//
+// 4.1.2.2. Guidelines for Choosing Type and Local Preferences
+// The RECOMMENDED values are 126 for host candidates, 100
+// for server reflexive candidates, 110 for peer reflexive candidates,
+// and 0 for relayed candidates.
+func (c CandidateType) Preference() uint16 {
+ switch c {
+ case CandidateTypeHost:
+ return 126
+ case CandidateTypePeerReflexive:
+ return 110
+ case CandidateTypeServerReflexive:
+ return 100
+ case CandidateTypeRelay, CandidateTypeUnspecified:
+ return 0
+ }
+ return 0
+}
+
+func containsCandidateType(candidateType CandidateType, candidateTypeList []CandidateType) bool {
+ if candidateTypeList == nil {
+ return false
+ }
+ for _, ct := range candidateTypeList {
+ if ct == candidateType {
+ return true
+ }
+ }
+ return false
+}