summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/webrtc/v3/icetransportpolicy.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/webrtc/v3/icetransportpolicy.go')
-rw-r--r--vendor/github.com/pion/webrtc/v3/icetransportpolicy.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/pion/webrtc/v3/icetransportpolicy.go b/vendor/github.com/pion/webrtc/v3/icetransportpolicy.go
new file mode 100644
index 0000000..16273f5
--- /dev/null
+++ b/vendor/github.com/pion/webrtc/v3/icetransportpolicy.go
@@ -0,0 +1,65 @@
+package webrtc
+
+import (
+ "encoding/json"
+)
+
+// ICETransportPolicy defines the ICE candidate policy surface the
+// permitted candidates. Only these candidates are used for connectivity checks.
+type ICETransportPolicy int
+
+// ICEGatherPolicy is the ORTC equivalent of ICETransportPolicy
+type ICEGatherPolicy = ICETransportPolicy
+
+const (
+ // ICETransportPolicyAll indicates any type of candidate is used.
+ ICETransportPolicyAll ICETransportPolicy = iota
+
+ // ICETransportPolicyRelay indicates only media relay candidates such
+ // as candidates passing through a TURN server are used.
+ ICETransportPolicyRelay
+)
+
+// This is done this way because of a linter.
+const (
+ iceTransportPolicyRelayStr = "relay"
+ iceTransportPolicyAllStr = "all"
+)
+
+// NewICETransportPolicy takes a string and converts it to ICETransportPolicy
+func NewICETransportPolicy(raw string) ICETransportPolicy {
+ switch raw {
+ case iceTransportPolicyRelayStr:
+ return ICETransportPolicyRelay
+ case iceTransportPolicyAllStr:
+ return ICETransportPolicyAll
+ default:
+ return ICETransportPolicy(Unknown)
+ }
+}
+
+func (t ICETransportPolicy) String() string {
+ switch t {
+ case ICETransportPolicyRelay:
+ return iceTransportPolicyRelayStr
+ case ICETransportPolicyAll:
+ return iceTransportPolicyAllStr
+ default:
+ return ErrUnknownType.Error()
+ }
+}
+
+// UnmarshalJSON parses the JSON-encoded data and stores the result
+func (t *ICETransportPolicy) UnmarshalJSON(b []byte) error {
+ var val string
+ if err := json.Unmarshal(b, &val); err != nil {
+ return err
+ }
+ *t = NewICETransportPolicy(val)
+ return nil
+}
+
+// MarshalJSON returns the JSON encoding
+func (t ICETransportPolicy) MarshalJSON() ([]byte, error) {
+ return json.Marshal(t.String())
+}