mirror of
https://github.com/pion/webrtc.git
synced 2025-09-26 19:21:12 +08:00

This commit replaces the Unknown constant with separate constants for each enumeration that uses it. Fixes #1293
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package webrtc
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// ICEProtocol indicates the transport protocol type that is used in the
|
|
// ice.URL structure.
|
|
type ICEProtocol int
|
|
|
|
const (
|
|
// ICEProtocolUnknown is the enum's zero-value
|
|
ICEProtocolUnknown ICEProtocol = iota
|
|
|
|
// ICEProtocolUDP indicates the URL uses a UDP transport.
|
|
ICEProtocolUDP
|
|
|
|
// 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 ICEProtocolUnknown, 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()
|
|
}
|
|
}
|