summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/ice/v2/role.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/ice/v2/role.go')
-rw-r--r--vendor/github.com/pion/ice/v2/role.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/pion/ice/v2/role.go b/vendor/github.com/pion/ice/v2/role.go
new file mode 100644
index 0000000..7a8bc06
--- /dev/null
+++ b/vendor/github.com/pion/ice/v2/role.go
@@ -0,0 +1,43 @@
+package ice
+
+import (
+ "fmt"
+)
+
+// Role represents ICE agent role, which can be controlling or controlled.
+type Role byte
+
+// Possible ICE agent roles.
+const (
+ Controlling Role = iota
+ Controlled
+)
+
+// UnmarshalText implements TextUnmarshaler.
+func (r *Role) UnmarshalText(text []byte) error {
+ switch string(text) {
+ case "controlling":
+ *r = Controlling
+ case "controlled":
+ *r = Controlled
+ default:
+ return fmt.Errorf("%w %q", errUnknownRole, text)
+ }
+ return nil
+}
+
+// MarshalText implements TextMarshaler.
+func (r Role) MarshalText() (text []byte, err error) {
+ return []byte(r.String()), nil
+}
+
+func (r Role) String() string {
+ switch r {
+ case Controlling:
+ return "controlling"
+ case Controlled:
+ return "controlled"
+ default:
+ return "unknown"
+ }
+}