48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
|
package webrtc
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// ICEProtocol indicates the transport protocol type that is used in the
|
||
|
// ice.URL structure.
|
||
|
type ICEProtocol int
|
||
|
|
||
|
const (
|
||
|
// ICEProtocolUDP indicates the URL uses a UDP transport.
|
||
|
ICEProtocolUDP ICEProtocol = iota + 1
|
||
|
|
||
|
// ICEProtocolTCP indicates the URL uses a TCP transport.
|
||
|
ICEProtocolTCP
|
||
|
)
|
||
|
|
||
|
// This is done this way because of a linter.
|
||
|
const (
|
||
|
iceProtocolUDPStr = "udp"
|
||
|
iceProtocolTCPStr = "tcp"
|
||
|
)
|
||
|
|
||
|
// NewICEProtocol takes a string and converts it to ICEProtocol
|
||
|
func NewICEProtocol(raw string) (ICEProtocol, error) {
|
||
|
switch {
|
||
|
case strings.EqualFold(iceProtocolUDPStr, raw):
|
||
|
return ICEProtocolUDP, nil
|
||
|
case strings.EqualFold(iceProtocolTCPStr, raw):
|
||
|
return ICEProtocolTCP, nil
|
||
|
default:
|
||
|
return ICEProtocol(Unknown), fmt.Errorf("%w: %s", errICEProtocolUnknown, raw)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (t ICEProtocol) String() string {
|
||
|
switch t {
|
||
|
case ICEProtocolUDP:
|
||
|
return iceProtocolUDPStr
|
||
|
case ICEProtocolTCP:
|
||
|
return iceProtocolTCPStr
|
||
|
default:
|
||
|
return ErrUnknownType.Error()
|
||
|
}
|
||
|
}
|