Files
webrtc/icetransportstate.go
Joe Turki feeeebf251 Upgrade golangci-lint, more linters
Introduces new linters, upgrade golangci-lint to version (v1.63.4)
2025-01-18 07:16:06 -06:00

157 lines
4.9 KiB
Go

// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT
package webrtc
import "github.com/pion/ice/v4"
// ICETransportState represents the current state of the ICE transport.
type ICETransportState int
const (
// ICETransportStateUnknown is the enum's zero-value.
ICETransportStateUnknown ICETransportState = iota
// ICETransportStateNew indicates the ICETransport is waiting
// for remote candidates to be supplied.
ICETransportStateNew
// ICETransportStateChecking indicates the ICETransport has
// received at least one remote candidate, and a local and remote
// ICECandidateComplete dictionary was not added as the last candidate.
ICETransportStateChecking
// ICETransportStateConnected indicates the ICETransport has
// received a response to an outgoing connectivity check, or has
// received incoming DTLS/media after a successful response to an
// incoming connectivity check, but is still checking other candidate
// pairs to see if there is a better connection.
ICETransportStateConnected
// ICETransportStateCompleted indicates the ICETransport tested
// all appropriate candidate pairs and at least one functioning
// candidate pair has been found.
ICETransportStateCompleted
// ICETransportStateFailed indicates the ICETransport the last
// candidate was added and all appropriate candidate pairs have either
// failed connectivity checks or have lost consent.
ICETransportStateFailed
// ICETransportStateDisconnected indicates the ICETransport has received
// at least one local and remote candidate, but the final candidate was
// received yet and all appropriate candidate pairs thus far have been
// tested and failed.
ICETransportStateDisconnected
// ICETransportStateClosed indicates the ICETransport has shut down
// and is no longer responding to STUN requests.
ICETransportStateClosed
)
const (
iceTransportStateNewStr = "new"
iceTransportStateCheckingStr = "checking"
iceTransportStateConnectedStr = "connected"
iceTransportStateCompletedStr = "completed"
iceTransportStateFailedStr = "failed"
iceTransportStateDisconnectedStr = "disconnected"
iceTransportStateClosedStr = "closed"
)
func newICETransportState(raw string) ICETransportState {
switch raw {
case iceTransportStateNewStr:
return ICETransportStateNew
case iceTransportStateCheckingStr:
return ICETransportStateChecking
case iceTransportStateConnectedStr:
return ICETransportStateConnected
case iceTransportStateCompletedStr:
return ICETransportStateCompleted
case iceTransportStateFailedStr:
return ICETransportStateFailed
case iceTransportStateDisconnectedStr:
return ICETransportStateDisconnected
case iceTransportStateClosedStr:
return ICETransportStateClosed
default:
return ICETransportStateUnknown
}
}
func (c ICETransportState) String() string {
switch c {
case ICETransportStateNew:
return iceTransportStateNewStr
case ICETransportStateChecking:
return iceTransportStateCheckingStr
case ICETransportStateConnected:
return iceTransportStateConnectedStr
case ICETransportStateCompleted:
return iceTransportStateCompletedStr
case ICETransportStateFailed:
return iceTransportStateFailedStr
case ICETransportStateDisconnected:
return iceTransportStateDisconnectedStr
case ICETransportStateClosed:
return iceTransportStateClosedStr
default:
return ErrUnknownType.Error()
}
}
func newICETransportStateFromICE(i ice.ConnectionState) ICETransportState {
switch i {
case ice.ConnectionStateNew:
return ICETransportStateNew
case ice.ConnectionStateChecking:
return ICETransportStateChecking
case ice.ConnectionStateConnected:
return ICETransportStateConnected
case ice.ConnectionStateCompleted:
return ICETransportStateCompleted
case ice.ConnectionStateFailed:
return ICETransportStateFailed
case ice.ConnectionStateDisconnected:
return ICETransportStateDisconnected
case ice.ConnectionStateClosed:
return ICETransportStateClosed
default:
return ICETransportStateUnknown
}
}
func (c ICETransportState) toICE() ice.ConnectionState {
switch c {
case ICETransportStateNew:
return ice.ConnectionStateNew
case ICETransportStateChecking:
return ice.ConnectionStateChecking
case ICETransportStateConnected:
return ice.ConnectionStateConnected
case ICETransportStateCompleted:
return ice.ConnectionStateCompleted
case ICETransportStateFailed:
return ice.ConnectionStateFailed
case ICETransportStateDisconnected:
return ice.ConnectionStateDisconnected
case ICETransportStateClosed:
return ice.ConnectionStateClosed
default:
return ice.ConnectionStateUnknown
}
}
// MarshalText implements encoding.TextMarshaler.
func (c ICETransportState) MarshalText() ([]byte, error) {
return []byte(c.String()), nil
}
// UnmarshalText implements encoding.TextUnmarshaler.
func (c *ICETransportState) UnmarshalText(b []byte) error {
*c = newICETransportState(string(b))
return nil
}