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" } }