44 lines
766 B
Go
44 lines
766 B
Go
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"
|
|
}
|
|
}
|