README
¶
Pion ICE
A Go implementation of ICE
Roadmap
The library is used as a part of our WebRTC implementation. Please refer to that roadmap to track our major milestones.
Community
Pion has an active community on the Golang Slack. Sign up and join the #pion channel for discussions and support. You can also use Pion mailing list.
We are always looking to support your projects. Please reach out if you have something to build!
If you need commercial support or don't want to use public methods you can contact us at team@pion.ly
Contributing
Check out the contributing wiki to join the group of amazing people making this project possible:
- John Bradley - Original Author
- Sean DuBois - Original Author
- Michael MacDonald - Original Author
- Michiel De Backker - Original Author
- Konstantin Itskov - Original Author
- Luke Curley
- Hugo Arregui
- Adam Kiss
- Aleksandr Razumov
- Yutaka Takeda
- Atsushi Watanabe
- Robert Eperjesi
- Sebastian Waisbrot
- Zizheng Tai
- Aaron France
- Chao Yuan
- Jason Maldonis
- Nevio Vesic
- David Hamilton
- adwpc
- Ori Bernstein
- Sam Lancia
- Lander Noterman
- BUPTCZQ
- Henry
- Jerko Steiner
- Sidney San Martín
- JooYoung Lim
- Kory Miller
- ZHENK
- Assad Obaid
- Antoine Baché
- Will Forcey
- David Zhao
- Juliusz Chroboczek
- Jin Gong
License
MIT License - see LICENSE for full text
Documentation
¶
Overview ¶
Package ice implements the Interactive Connectivity Establishment (ICE) protocol defined in rfc5245.
Package ice ...
Package ice ...
Index ¶
- Constants
- Variables
- type Agent
- func (a *Agent) Accept(ctx context.Context, remoteUfrag, remotePwd string) (*Conn, error)
- func (a *Agent) AddRemoteCandidate(c Candidate) error
- func (a *Agent) Close() error
- func (a *Agent) Dial(ctx context.Context, remoteUfrag, remotePwd string) (*Conn, error)
- func (a *Agent) GatherCandidates() error
- func (a *Agent) GetCandidatePairsStats() []CandidatePairStats
- func (a *Agent) GetLocalCandidates() ([]Candidate, error)
- func (a *Agent) GetLocalCandidatesStats() []CandidateStats
- func (a *Agent) GetLocalUserCredentials() (frag string, pwd string, err error)
- func (a *Agent) GetRemoteCandidatesStats() []CandidateStats
- func (a *Agent) GetRemoteUserCredentials() (frag string, pwd string, err error)
- func (a *Agent) GetSelectedCandidatePair() (*CandidatePair, error)
- func (a *Agent) OnCandidate(f func(Candidate)) error
- func (a *Agent) OnConnectionStateChange(f func(ConnectionState)) error
- func (a *Agent) OnSelectedCandidatePairChange(f func(Candidate, Candidate)) error
- func (a *Agent) Restart(ufrag, pwd string) error
- func (a *Agent) SetRemoteCredentials(remoteUfrag, remotePwd string) error
- type AgentConfig
- type AttrControl
- type AttrControlled
- type AttrControlling
- type Candidate
- type CandidateHost
- func (c *CandidateHost) Address() string
- func (c *CandidateHost) Component() uint16
- func (c *CandidateHost) Deadline() (deadline time.Time, ok bool)
- func (c *CandidateHost) Done() <-chan struct{}
- func (c *CandidateHost) Equal(other Candidate) bool
- func (c *CandidateHost) Err() error
- func (c *CandidateHost) Foundation() string
- func (c *CandidateHost) ID() string
- func (c *CandidateHost) LastReceived() time.Time
- func (c *CandidateHost) LastSent() time.Time
- func (c *CandidateHost) LocalPreference() uint16
- func (c *CandidateHost) Marshal() string
- func (c *CandidateHost) NetworkType() NetworkType
- func (c *CandidateHost) Port() int
- func (c *CandidateHost) Priority() uint32
- func (c *CandidateHost) RelatedAddress() *CandidateRelatedAddress
- func (c *CandidateHost) SetComponent(component uint16)
- func (c *CandidateHost) String() string
- func (c *CandidateHost) TCPType() TCPType
- func (c *CandidateHost) Type() CandidateType
- func (c *CandidateHost) Value(key interface{}) interface{}
- type CandidateHostConfig
- type CandidatePair
- type CandidatePairState
- type CandidatePairStats
- type CandidatePeerReflexive
- func (c *CandidatePeerReflexive) Address() string
- func (c *CandidatePeerReflexive) Component() uint16
- func (c *CandidatePeerReflexive) Deadline() (deadline time.Time, ok bool)
- func (c *CandidatePeerReflexive) Done() <-chan struct{}
- func (c *CandidatePeerReflexive) Equal(other Candidate) bool
- func (c *CandidatePeerReflexive) Err() error
- func (c *CandidatePeerReflexive) Foundation() string
- func (c *CandidatePeerReflexive) ID() string
- func (c *CandidatePeerReflexive) LastReceived() time.Time
- func (c *CandidatePeerReflexive) LastSent() time.Time
- func (c *CandidatePeerReflexive) LocalPreference() uint16
- func (c *CandidatePeerReflexive) Marshal() string
- func (c *CandidatePeerReflexive) NetworkType() NetworkType
- func (c *CandidatePeerReflexive) Port() int
- func (c *CandidatePeerReflexive) Priority() uint32
- func (c *CandidatePeerReflexive) RelatedAddress() *CandidateRelatedAddress
- func (c *CandidatePeerReflexive) SetComponent(component uint16)
- func (c *CandidatePeerReflexive) String() string
- func (c *CandidatePeerReflexive) TCPType() TCPType
- func (c *CandidatePeerReflexive) Type() CandidateType
- func (c *CandidatePeerReflexive) Value(key interface{}) interface{}
- type CandidatePeerReflexiveConfig
- type CandidateRelatedAddress
- type CandidateRelay
- func (c *CandidateRelay) Address() string
- func (c *CandidateRelay) Component() uint16
- func (c *CandidateRelay) Deadline() (deadline time.Time, ok bool)
- func (c *CandidateRelay) Done() <-chan struct{}
- func (c *CandidateRelay) Equal(other Candidate) bool
- func (c *CandidateRelay) Err() error
- func (c *CandidateRelay) Foundation() string
- func (c *CandidateRelay) ID() string
- func (c *CandidateRelay) LastReceived() time.Time
- func (c *CandidateRelay) LastSent() time.Time
- func (c *CandidateRelay) LocalPreference() uint16
- func (c *CandidateRelay) Marshal() string
- func (c *CandidateRelay) NetworkType() NetworkType
- func (c *CandidateRelay) Port() int
- func (c *CandidateRelay) Priority() uint32
- func (c *CandidateRelay) RelatedAddress() *CandidateRelatedAddress
- func (c *CandidateRelay) SetComponent(component uint16)
- func (c *CandidateRelay) String() string
- func (c *CandidateRelay) TCPType() TCPType
- func (c *CandidateRelay) Type() CandidateType
- func (c *CandidateRelay) Value(key interface{}) interface{}
- type CandidateRelayConfig
- type CandidateServerReflexive
- func (c *CandidateServerReflexive) Address() string
- func (c *CandidateServerReflexive) Component() uint16
- func (c *CandidateServerReflexive) Deadline() (deadline time.Time, ok bool)
- func (c *CandidateServerReflexive) Done() <-chan struct{}
- func (c *CandidateServerReflexive) Equal(other Candidate) bool
- func (c *CandidateServerReflexive) Err() error
- func (c *CandidateServerReflexive) Foundation() string
- func (c *CandidateServerReflexive) ID() string
- func (c *CandidateServerReflexive) LastReceived() time.Time
- func (c *CandidateServerReflexive) LastSent() time.Time
- func (c *CandidateServerReflexive) LocalPreference() uint16
- func (c *CandidateServerReflexive) Marshal() string
- func (c *CandidateServerReflexive) NetworkType() NetworkType
- func (c *CandidateServerReflexive) Port() int
- func (c *CandidateServerReflexive) Priority() uint32
- func (c *CandidateServerReflexive) RelatedAddress() *CandidateRelatedAddress
- func (c *CandidateServerReflexive) SetComponent(component uint16)
- func (c *CandidateServerReflexive) String() string
- func (c *CandidateServerReflexive) TCPType() TCPType
- func (c *CandidateServerReflexive) Type() CandidateType
- func (c *CandidateServerReflexive) Value(key interface{}) interface{}
- type CandidateServerReflexiveConfig
- type CandidateStats
- type CandidateType
- type Conn
- func (c *Conn) BytesReceived() uint64
- func (c *Conn) BytesSent() uint64
- func (c *Conn) Close() error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) Read(p []byte) (int, error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) SetDeadline(t time.Time) error
- func (c *Conn) SetReadDeadline(t time.Time) error
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) Write(p []byte) (int, error)
- type ConnectionState
- type GatheringState
- type MulticastDNSMode
- type NetworkType
- type PriorityAttr
- type ProtoType
- type Role
- type SchemeType
- type TCPMux
- type TCPMuxDefault
- type TCPMuxParams
- type TCPType
- type UDPMux
- type UDPMuxDefault
- type UDPMuxParams
- type URL
- type UseCandidateAttr
Constants ¶
const ( // ComponentRTP indicates that the candidate is used for RTP ComponentRTP uint16 = 1 // ComponentRTCP indicates that the candidate is used for RTCP ComponentRTCP )
const ( // CandidatePairStateWaiting means a check has not been performed for // this pair CandidatePairStateWaiting = iota + 1 // CandidatePairStateInProgress means a check has been sent for this pair, // but the transaction is in progress. CandidatePairStateInProgress // CandidatePairStateFailed means a check for this pair was already done // and failed, either never producing any response or producing an unrecoverable // failure response. CandidatePairStateFailed // CandidatePairStateSucceeded means a check for this pair was already // done and produced a successful result. CandidatePairStateSucceeded )
const ( // ConnectionStateNew ICE agent is gathering addresses ConnectionStateNew = iota + 1 // ConnectionStateChecking ICE agent has been given local and remote candidates, and is attempting to find a match ConnectionStateChecking // ConnectionStateConnected ICE agent has a pairing, but is still checking other pairs ConnectionStateConnected // ConnectionStateCompleted ICE agent has finished ConnectionStateCompleted // ConnectionStateFailed ICE agent never could successfully connect ConnectionStateFailed // ConnectionStateDisconnected ICE agent connected successfully, but has entered a failed state ConnectionStateDisconnected // ConnectionStateClosed ICE agent has finished and is no longer handling requests ConnectionStateClosed )
List of supported States
const Unknown = iota
Unknown defines default public constant to use for "enum" like struct comparisons when no value was defined.
Variables ¶
var ( // ErrUnknownType indicates an error with Unknown info. ErrUnknownType = errors.New("Unknown") // ErrSchemeType indicates the scheme type could not be parsed. ErrSchemeType = errors.New("unknown scheme type") // ErrSTUNQuery indicates query arguments are provided in a STUN URL. ErrSTUNQuery = errors.New("queries not supported in stun address") // ErrInvalidQuery indicates an malformed query is provided. ErrInvalidQuery = errors.New("invalid query") // ErrHost indicates malformed hostname is provided. ErrHost = errors.New("invalid hostname") // ErrPort indicates malformed port is provided. ErrPort = errors.New("invalid port") // ErrLocalUfragInsufficientBits indicates local username fragment insufficient bits are provided. // Have to be at least 24 bits long ErrLocalUfragInsufficientBits = errors.New("local username fragment is less than 24 bits long") // ErrLocalPwdInsufficientBits indicates local passoword insufficient bits are provided. // Have to be at least 128 bits long ErrLocalPwdInsufficientBits = errors.New("local password is less than 128 bits long") // ErrProtoType indicates an unsupported transport type was provided. ErrProtoType = errors.New("invalid transport protocol type") // ErrClosed indicates the agent is closed ErrClosed = errors.New("the agent is closed") // ErrNoCandidatePairs indicates agent does not have a valid candidate pair ErrNoCandidatePairs = errors.New("no candidate pairs available") // ErrCanceledByCaller indicates agent connection was canceled by the caller ErrCanceledByCaller = errors.New("connecting canceled by caller") // ErrMultipleStart indicates agent was started twice ErrMultipleStart = errors.New("attempted to start agent twice") // ErrRemoteUfragEmpty indicates agent was started with an empty remote ufrag ErrRemoteUfragEmpty = errors.New("remote ufrag is empty") // ErrRemotePwdEmpty indicates agent was started with an empty remote pwd ErrRemotePwdEmpty = errors.New("remote pwd is empty") // ErrNoOnCandidateHandler indicates agent was started without OnCandidate ErrNoOnCandidateHandler = errors.New("no OnCandidate provided") // ErrMultipleGatherAttempted indicates GatherCandidates has been called multiple times ErrMultipleGatherAttempted = errors.New("attempting to gather candidates during gathering state") // ErrUsernameEmpty indicates agent was give TURN URL with an empty Username ErrUsernameEmpty = errors.New("username is empty") // ErrPasswordEmpty indicates agent was give TURN URL with an empty Password ErrPasswordEmpty = errors.New("password is empty") // ErrAddressParseFailed indicates we were unable to parse a candidate address ErrAddressParseFailed = errors.New("failed to parse address") // ErrLiteUsingNonHostCandidates indicates non host candidates were selected for a lite agent ErrLiteUsingNonHostCandidates = errors.New("lite agents must only use host candidates") // ErrUselessUrlsProvided indicates that one or more URL was provided to the agent but no host // candidate required them ErrUselessUrlsProvided = errors.New("agent does not need URL with selected candidate types") // ErrUnsupportedNAT1To1IPCandidateType indicates that the specified NAT1To1IPCandidateType is // unsupported ErrUnsupportedNAT1To1IPCandidateType = errors.New("unsupported 1:1 NAT IP candidate type") // ErrInvalidNAT1To1IPMapping indicates that the given 1:1 NAT IP mapping is invalid ErrInvalidNAT1To1IPMapping = errors.New("invalid 1:1 NAT IP mapping") // ErrExternalMappedIPNotFound in NAT1To1IPMapping ErrExternalMappedIPNotFound = errors.New("external mapped IP not found") // ErrMulticastDNSWithNAT1To1IPMapping indicates that the mDNS gathering cannot be used along // with 1:1 NAT IP mapping for host candidate. ErrMulticastDNSWithNAT1To1IPMapping = errors.New("mDNS gathering cannot be used with 1:1 NAT IP mapping for host candidate") // ErrIneffectiveNAT1To1IPMappingHost indicates that 1:1 NAT IP mapping for host candidate is // requested, but the host candidate type is disabled. ErrIneffectiveNAT1To1IPMappingHost = errors.New("1:1 NAT IP mapping for host candidate ineffective") // ErrIneffectiveNAT1To1IPMappingSrflx indicates that 1:1 NAT IP mapping for srflx candidate is // requested, but the srflx candidate type is disabled. ErrIneffectiveNAT1To1IPMappingSrflx = errors.New("1:1 NAT IP mapping for srflx candidate ineffective") // ErrInvalidMulticastDNSHostName indicates an invalid MulticastDNSHostName ErrInvalidMulticastDNSHostName = errors.New("invalid mDNS HostName, must end with .local and can only contain a single '.'") // ErrRestartWhenGathering indicates Restart was called when Agent is in GatheringStateGathering ErrRestartWhenGathering = errors.New("ICE Agent can not be restarted when gathering") // ErrRunCanceled indicates a run operation was canceled by its individual done ErrRunCanceled = errors.New("run was canceled by done") // ErrTCPMuxNotInitialized indicates TCPMux is not initialized and that invalidTCPMux is used. ErrTCPMuxNotInitialized = errors.New("TCPMux is not initialized") // ErrTCPRemoteAddrAlreadyExists indicates we already have the connection with same remote addr. ErrTCPRemoteAddrAlreadyExists = errors.New("conn with same remote addr already exists") )
Functions ¶
This section is empty.
Types ¶
type Agent ¶
type Agent struct {
// contains filtered or unexported fields
}
Agent represents the ICE agent
func (*Agent) Accept ¶
Accept connects to the remote agent, acting as the controlled ice agent. Accept blocks until at least one ice candidate pair has successfully connected.
func (*Agent) AddRemoteCandidate ¶
AddRemoteCandidate adds a new remote candidate
func (*Agent) Dial ¶
Dial connects to the remote agent, acting as the controlling ice agent. Dial blocks until at least one ice candidate pair has successfully connected.
func (*Agent) GatherCandidates ¶
GatherCandidates initiates the trickle based gathering process.
func (*Agent) GetCandidatePairsStats ¶
func (a *Agent) GetCandidatePairsStats() []CandidatePairStats
GetCandidatePairsStats returns a list of candidate pair stats
func (*Agent) GetLocalCandidates ¶
GetLocalCandidates returns the local candidates
func (*Agent) GetLocalCandidatesStats ¶
func (a *Agent) GetLocalCandidatesStats() []CandidateStats
GetLocalCandidatesStats returns a list of local candidates stats
func (*Agent) GetLocalUserCredentials ¶
GetLocalUserCredentials returns the local user credentials
func (*Agent) GetRemoteCandidatesStats ¶
func (a *Agent) GetRemoteCandidatesStats() []CandidateStats
GetRemoteCandidatesStats returns a list of remote candidates stats
func (*Agent) GetRemoteUserCredentials ¶
GetRemoteUserCredentials returns the remote user credentials
func (*Agent) GetSelectedCandidatePair ¶ added in v2.0.17
func (a *Agent) GetSelectedCandidatePair() (*CandidatePair, error)
GetSelectedCandidatePair returns the selected pair or nil if there is none
func (*Agent) OnCandidate ¶
OnCandidate sets a handler that is fired when new candidates gathered. When the gathering process complete the last candidate is nil.
func (*Agent) OnConnectionStateChange ¶
func (a *Agent) OnConnectionStateChange(f func(ConnectionState)) error
OnConnectionStateChange sets a handler that is fired when the connection state changes
func (*Agent) OnSelectedCandidatePairChange ¶
OnSelectedCandidatePairChange sets a handler that is fired when the final candidate pair is selected
func (*Agent) Restart ¶
Restart restarts the ICE Agent with the provided ufrag/pwd If no ufrag/pwd is provided the Agent will generate one itself
Restart must only be called when GatheringState is GatheringStateComplete a user must then call GatherCandidates explicitly to start generating new ones
func (*Agent) SetRemoteCredentials ¶
SetRemoteCredentials sets the credentials of the remote agent
type AgentConfig ¶
type AgentConfig struct { Urls []*URL // PortMin and PortMax are optional. Leave them 0 for the default UDP port allocation strategy. PortMin uint16 PortMax uint16 // LocalUfrag and LocalPwd values used to perform connectivity // checks. The values MUST be unguessable, with at least 128 bits of // random number generator output used to generate the password, and // at least 24 bits of output to generate the username fragment. LocalUfrag string LocalPwd string // MulticastDNSMode controls mDNS behavior for the ICE agent MulticastDNSMode MulticastDNSMode // MulticastDNSHostName controls the hostname for this agent. If none is specified a random one will be generated MulticastDNSHostName string // DisconnectedTimeout defaults to 5 seconds when this property is nil. // If the duration is 0, the ICE Agent will never go to disconnected DisconnectedTimeout *time.Duration // FailedTimeout defaults to 25 seconds when this property is nil. // If the duration is 0, we will never go to failed. FailedTimeout *time.Duration // KeepaliveInterval determines how often should we send ICE // keepalives (should be less then connectiontimeout above) // when this is nil, it defaults to 10 seconds. // A keepalive interval of 0 means we never send keepalive packets KeepaliveInterval *time.Duration // NetworkTypes is an optional configuration for disabling or enabling // support for specific network types. NetworkTypes []NetworkType // CandidateTypes is an optional configuration for disabling or enabling // support for specific candidate types. CandidateTypes []CandidateType LoggerFactory logging.LoggerFactory // MaxBindingRequests is the max amount of binding requests the agent will send // over a candidate pair for validation or nomination, if after MaxBindingRequests // the candidate is yet to answer a binding request or a nomination we set the pair as failed MaxBindingRequests *uint16 // Lite agents do not perform connectivity check and only provide host candidates. Lite bool // NAT1To1IPCandidateType is used along with NAT1To1IPs to specify which candidate type // the 1:1 NAT IP addresses should be mapped to. // If unspecified or CandidateTypeHost, NAT1To1IPs are used to replace host candidate IPs. // If CandidateTypeServerReflexive, it will insert a srflx candidate (as if it was dervied // from a STUN server) with its port number being the one for the actual host candidate. // Other values will result in an error. NAT1To1IPCandidateType CandidateType // NAT1To1IPs contains a list of public IP addresses that are to be used as a host // candidate or srflx candidate. This is used typically for servers that are behind // 1:1 D-NAT (e.g. AWS EC2 instances) and to eliminate the need of server reflexisive // candidate gathering. NAT1To1IPs []string // HostAcceptanceMinWait specify a minimum wait time before selecting host candidates HostAcceptanceMinWait *time.Duration // HostAcceptanceMinWait specify a minimum wait time before selecting srflx candidates SrflxAcceptanceMinWait *time.Duration // HostAcceptanceMinWait specify a minimum wait time before selecting prflx candidates PrflxAcceptanceMinWait *time.Duration // HostAcceptanceMinWait specify a minimum wait time before selecting relay candidates RelayAcceptanceMinWait *time.Duration // Net is the our abstracted network interface for internal development purpose only // (see github.com/pion/transport/vnet) Net *vnet.Net // InterfaceFilter is a function that you can use in order to whitelist or blacklist // the interfaces which are used to gather ICE candidates. InterfaceFilter func(string) bool // InsecureSkipVerify controls if self-signed certificates are accepted when connecting // to TURN servers via TLS or DTLS InsecureSkipVerify bool // TCPMux will be used for multiplexing incoming TCP connections for ICE TCP. // Currently only passive candidates are supported. This functionality is // experimental and the API might change in the future. TCPMux TCPMux // UDPMux is used for multiplexing multiple incoming UDP connections on a single port // when this is set, the agent ignores PortMin and PortMax configurations and will // defer to UDPMux for incoming connections UDPMux UDPMux // Proxy Dialer is a dialer that should be implemented by the user based on golang.org/x/net/proxy // dial interface in order to support corporate proxies ProxyDialer proxy.Dialer // contains filtered or unexported fields }
AgentConfig collects the arguments to ice.Agent construction into a single structure, for future-proofness of the interface
type AttrControl ¶
AttrControl is helper that wraps ICE-{CONTROLLED,CONTROLLING}.
type AttrControlled ¶
type AttrControlled uint64
AttrControlled represents ICE-CONTROLLED attribute.
type AttrControlling ¶
type AttrControlling uint64
AttrControlling represents ICE-CONTROLLING attribute.
type Candidate ¶
type Candidate interface { // An arbitrary string used in the freezing algorithm to // group similar candidates. It is the same for two candidates that // have the same type, base IP address, protocol (UDP, TCP, etc.), // and STUN or TURN server. Foundation() string // ID is a unique identifier for just this candidate // Unlike the foundation this is different for each candidate ID() string // A component is a piece of a data stream. // An example is one for RTP, and one for RTCP Component() uint16 SetComponent(uint16) // The last time this candidate received traffic LastReceived() time.Time // The last time this candidate sent traffic LastSent() time.Time NetworkType() NetworkType Address() string Port() int Priority() uint32 // A transport address related to a // candidate, which is useful for diagnostics and other purposes RelatedAddress() *CandidateRelatedAddress String() string Type() CandidateType TCPType() TCPType Equal(other Candidate) bool Marshal() string // contains filtered or unexported methods }
Candidate represents an ICE candidate
func UnmarshalCandidate ¶ added in v2.0.2
UnmarshalCandidate creates a Candidate from its string representation
type CandidateHost ¶
type CandidateHost struct {
// contains filtered or unexported fields
}
CandidateHost is a candidate of type host
func NewCandidateHost ¶
func NewCandidateHost(config *CandidateHostConfig) (*CandidateHost, error)
NewCandidateHost creates a new host candidate
func (*CandidateHost) Address ¶
func (c *CandidateHost) Address() string
Address returns Candidate Address
func (*CandidateHost) Component ¶
func (c *CandidateHost) Component() uint16
Component returns candidate component
func (*CandidateHost) Done ¶
func (c *CandidateHost) Done() <-chan struct{}
Done implements context.Context
func (*CandidateHost) Foundation ¶ added in v2.0.3
func (c *CandidateHost) Foundation() string
func (*CandidateHost) LastReceived ¶
LastReceived returns a time.Time indicating the last time this candidate was received
func (*CandidateHost) LastSent ¶
LastSent returns a time.Time indicating the last time this candidate was sent
func (*CandidateHost) LocalPreference ¶
func (c *CandidateHost) LocalPreference() uint16
LocalPreference returns the local preference for this candidate
func (*CandidateHost) Marshal ¶ added in v2.0.2
func (c *CandidateHost) Marshal() string
Marshal returns the string representation of the ICECandidate
func (*CandidateHost) NetworkType ¶
func (c *CandidateHost) NetworkType() NetworkType
NetworkType returns candidate NetworkType
func (*CandidateHost) Priority ¶
func (c *CandidateHost) Priority() uint32
Priority computes the priority for this ICE Candidate
func (*CandidateHost) RelatedAddress ¶
func (c *CandidateHost) RelatedAddress() *CandidateRelatedAddress
RelatedAddress returns *CandidateRelatedAddress
func (*CandidateHost) SetComponent ¶ added in v2.0.3
func (c *CandidateHost) SetComponent(component uint16)
func (*CandidateHost) String ¶
func (c *CandidateHost) String() string
String makes the candidateBase printable
func (*CandidateHost) Type ¶
func (c *CandidateHost) Type() CandidateType
Type returns candidate type
type CandidateHostConfig ¶
type CandidateHostConfig struct { CandidateID string Network string Address string Port int Component uint16 Priority uint32 Foundation string TCPType TCPType }
CandidateHostConfig is the config required to create a new CandidateHost
type CandidatePair ¶ added in v2.0.17
type CandidatePair struct { Remote Candidate Local Candidate // contains filtered or unexported fields }
CandidatePair is a combination of a local and remote candidate
func (*CandidatePair) String ¶ added in v2.0.17
func (p *CandidatePair) String() string
type CandidatePairState ¶
type CandidatePairState int
CandidatePairState represent the ICE candidate pair state
func (CandidatePairState) String ¶
func (c CandidatePairState) String() string
type CandidatePairStats ¶
type CandidatePairStats struct { // Timestamp is the timestamp associated with this object. Timestamp time.Time // LocalCandidateID is the ID of the local candidate LocalCandidateID string // RemoteCandidateID is the ID of the remote candidate RemoteCandidateID string // State represents the state of the checklist for the local and remote // candidates in a pair. State CandidatePairState // Nominated is true when this valid pair that should be used for media // if it is the highest-priority one amongst those whose nominated flag is set Nominated bool // PacketsSent represents the total number of packets sent on this candidate pair. PacketsSent uint32 // PacketsReceived represents the total number of packets received on this candidate pair. PacketsReceived uint32 // BytesSent represents the total number of payload bytes sent on this candidate pair // not including headers or padding. BytesSent uint64 // BytesReceived represents the total number of payload bytes received on this candidate pair // not including headers or padding. BytesReceived uint64 // LastPacketSentTimestamp represents the timestamp at which the last packet was // sent on this particular candidate pair, excluding STUN packets. LastPacketSentTimestamp time.Time // LastPacketReceivedTimestamp represents the timestamp at which the last packet // was received on this particular candidate pair, excluding STUN packets. LastPacketReceivedTimestamp time.Time // FirstRequestTimestamp represents the timestamp at which the first STUN request // was sent on this particular candidate pair. FirstRequestTimestamp time.Time // LastRequestTimestamp represents the timestamp at which the last STUN request // was sent on this particular candidate pair. The average interval between two // consecutive connectivity checks sent can be calculated with // (LastRequestTimestamp - FirstRequestTimestamp) / RequestsSent. LastRequestTimestamp time.Time // LastResponseTimestamp represents the timestamp at which the last STUN response // was received on this particular candidate pair. LastResponseTimestamp time.Time // TotalRoundTripTime represents the sum of all round trip time measurements // in seconds since the beginning of the session, based on STUN connectivity // check responses (ResponsesReceived), including those that reply to requests // that are sent in order to verify consent. The average round trip time can // be computed from TotalRoundTripTime by dividing it by ResponsesReceived. TotalRoundTripTime float64 // CurrentRoundTripTime represents the latest round trip time measured in seconds, // computed from both STUN connectivity checks, including those that are sent // for consent verification. CurrentRoundTripTime float64 // AvailableOutgoingBitrate is calculated by the underlying congestion control // by combining the available bitrate for all the outgoing RTP streams using // this candidate pair. The bitrate measurement does not count the size of the // IP or other transport layers like TCP or UDP. It is similar to the TIAS defined // in RFC 3890, i.e., it is measured in bits per second and the bitrate is calculated // over a 1 second window. AvailableOutgoingBitrate float64 // AvailableIncomingBitrate is calculated by the underlying congestion control // by combining the available bitrate for all the incoming RTP streams using // this candidate pair. The bitrate measurement does not count the size of the // IP or other transport layers like TCP or UDP. It is similar to the TIAS defined // in RFC 3890, i.e., it is measured in bits per second and the bitrate is // calculated over a 1 second window. AvailableIncomingBitrate float64 // CircuitBreakerTriggerCount represents the number of times the circuit breaker // is triggered for this particular 5-tuple, ceasing transmission. CircuitBreakerTriggerCount uint32 // RequestsReceived represents the total number of connectivity check requests // received (including retransmissions). It is impossible for the receiver to // tell whether the request was sent in order to check connectivity or check // consent, so all connectivity checks requests are counted here. RequestsReceived uint64 // RequestsSent represents the total number of connectivity check requests // sent (not including retransmissions). RequestsSent uint64 // ResponsesReceived represents the total number of connectivity check responses received. ResponsesReceived uint64 // ResponsesSent epresents the total number of connectivity check responses sent. // Since we cannot distinguish connectivity check requests and consent requests, // all responses are counted. ResponsesSent uint64 // RetransmissionsReceived represents the total number of connectivity check // request retransmissions received. RetransmissionsReceived uint64 // RetransmissionsSent represents the total number of connectivity check // request retransmissions sent. RetransmissionsSent uint64 // ConsentRequestsSent represents the total number of consent requests sent. ConsentRequestsSent uint64 // ConsentExpiredTimestamp represents the timestamp at which the latest valid // STUN binding response expired. ConsentExpiredTimestamp time.Time }
CandidatePairStats contains ICE candidate pair statistics
type CandidatePeerReflexive ¶
type CandidatePeerReflexive struct {
// contains filtered or unexported fields
}
CandidatePeerReflexive ...
func NewCandidatePeerReflexive ¶
func NewCandidatePeerReflexive(config *CandidatePeerReflexiveConfig) (*CandidatePeerReflexive, error)
NewCandidatePeerReflexive creates a new peer reflective candidate
func (*CandidatePeerReflexive) Address ¶
func (c *CandidatePeerReflexive) Address() string
Address returns Candidate Address
func (*CandidatePeerReflexive) Component ¶
func (c *CandidatePeerReflexive) Component() uint16
Component returns candidate component
func (*CandidatePeerReflexive) Done ¶
func (c *CandidatePeerReflexive) Done() <-chan struct{}
Done implements context.Context
func (*CandidatePeerReflexive) Err ¶
func (c *CandidatePeerReflexive) Err() error
Err implements context.Context
func (*CandidatePeerReflexive) Foundation ¶ added in v2.0.3
func (c *CandidatePeerReflexive) Foundation() string
func (*CandidatePeerReflexive) ID ¶
func (c *CandidatePeerReflexive) ID() string
ID returns Candidate ID
func (*CandidatePeerReflexive) LastReceived ¶
LastReceived returns a time.Time indicating the last time this candidate was received
func (*CandidatePeerReflexive) LastSent ¶
LastSent returns a time.Time indicating the last time this candidate was sent
func (*CandidatePeerReflexive) LocalPreference ¶
func (c *CandidatePeerReflexive) LocalPreference() uint16
LocalPreference returns the local preference for this candidate
func (*CandidatePeerReflexive) Marshal ¶ added in v2.0.2
func (c *CandidatePeerReflexive) Marshal() string
Marshal returns the string representation of the ICECandidate
func (*CandidatePeerReflexive) NetworkType ¶
func (c *CandidatePeerReflexive) NetworkType() NetworkType
NetworkType returns candidate NetworkType
func (*CandidatePeerReflexive) Port ¶
func (c *CandidatePeerReflexive) Port() int
Port returns Candidate Port
func (*CandidatePeerReflexive) Priority ¶
func (c *CandidatePeerReflexive) Priority() uint32
Priority computes the priority for this ICE Candidate
func (*CandidatePeerReflexive) RelatedAddress ¶
func (c *CandidatePeerReflexive) RelatedAddress() *CandidateRelatedAddress
RelatedAddress returns *CandidateRelatedAddress
func (*CandidatePeerReflexive) SetComponent ¶ added in v2.0.3
func (c *CandidatePeerReflexive) SetComponent(component uint16)
func (*CandidatePeerReflexive) String ¶
func (c *CandidatePeerReflexive) String() string
String makes the candidateBase printable
func (*CandidatePeerReflexive) Type ¶
func (c *CandidatePeerReflexive) Type() CandidateType
Type returns candidate type
type CandidatePeerReflexiveConfig ¶
type CandidatePeerReflexiveConfig struct { CandidateID string Network string Address string Port int Component uint16 Priority uint32 Foundation string RelAddr string RelPort int }
CandidatePeerReflexiveConfig is the config required to create a new CandidatePeerReflexive
type CandidateRelatedAddress ¶
CandidateRelatedAddress convey transport addresses related to the candidate, useful for diagnostics and other purposes.
func (*CandidateRelatedAddress) Equal ¶
func (c *CandidateRelatedAddress) Equal(other *CandidateRelatedAddress) bool
Equal allows comparing two CandidateRelatedAddresses. The CandidateRelatedAddress are allowed to be nil.
func (*CandidateRelatedAddress) String ¶
func (c *CandidateRelatedAddress) String() string
String makes CandidateRelatedAddress printable
type CandidateRelay ¶
type CandidateRelay struct {
// contains filtered or unexported fields
}
CandidateRelay ...
func NewCandidateRelay ¶
func NewCandidateRelay(config *CandidateRelayConfig) (*CandidateRelay, error)
NewCandidateRelay creates a new relay candidate
func (*CandidateRelay) Address ¶
func (c *CandidateRelay) Address() string
Address returns Candidate Address
func (*CandidateRelay) Component ¶
func (c *CandidateRelay) Component() uint16
Component returns candidate component
func (*CandidateRelay) Done ¶
func (c *CandidateRelay) Done() <-chan struct{}
Done implements context.Context
func (*CandidateRelay) Foundation ¶ added in v2.0.3
func (c *CandidateRelay) Foundation() string
func (*CandidateRelay) LastReceived ¶
LastReceived returns a time.Time indicating the last time this candidate was received
func (*CandidateRelay) LastSent ¶
LastSent returns a time.Time indicating the last time this candidate was sent
func (*CandidateRelay) LocalPreference ¶
func (c *CandidateRelay) LocalPreference() uint16
LocalPreference returns the local preference for this candidate
func (*CandidateRelay) Marshal ¶ added in v2.0.2
func (c *CandidateRelay) Marshal() string
Marshal returns the string representation of the ICECandidate
func (*CandidateRelay) NetworkType ¶
func (c *CandidateRelay) NetworkType() NetworkType
NetworkType returns candidate NetworkType
func (*CandidateRelay) Priority ¶
func (c *CandidateRelay) Priority() uint32
Priority computes the priority for this ICE Candidate
func (*CandidateRelay) RelatedAddress ¶
func (c *CandidateRelay) RelatedAddress() *CandidateRelatedAddress
RelatedAddress returns *CandidateRelatedAddress
func (*CandidateRelay) SetComponent ¶ added in v2.0.3
func (c *CandidateRelay) SetComponent(component uint16)
func (*CandidateRelay) String ¶
func (c *CandidateRelay) String() string
String makes the candidateBase printable
func (*CandidateRelay) Type ¶
func (c *CandidateRelay) Type() CandidateType
Type returns candidate type
type CandidateRelayConfig ¶
type CandidateRelayConfig struct { CandidateID string Network string Address string Port int Component uint16 Priority uint32 Foundation string RelAddr string RelPort int OnClose func() error }
CandidateRelayConfig is the config required to create a new CandidateRelay
type CandidateServerReflexive ¶
type CandidateServerReflexive struct {
// contains filtered or unexported fields
}
CandidateServerReflexive ...
func NewCandidateServerReflexive ¶
func NewCandidateServerReflexive(config *CandidateServerReflexiveConfig) (*CandidateServerReflexive, error)
NewCandidateServerReflexive creates a new server reflective candidate
func (*CandidateServerReflexive) Address ¶
func (c *CandidateServerReflexive) Address() string
Address returns Candidate Address
func (*CandidateServerReflexive) Component ¶
func (c *CandidateServerReflexive) Component() uint16
Component returns candidate component
func (*CandidateServerReflexive) Done ¶
func (c *CandidateServerReflexive) Done() <-chan struct{}
Done implements context.Context
func (*CandidateServerReflexive) Err ¶
func (c *CandidateServerReflexive) Err() error
Err implements context.Context
func (*CandidateServerReflexive) Foundation ¶ added in v2.0.3
func (c *CandidateServerReflexive) Foundation() string
func (*CandidateServerReflexive) ID ¶
func (c *CandidateServerReflexive) ID() string
ID returns Candidate ID
func (*CandidateServerReflexive) LastReceived ¶
LastReceived returns a time.Time indicating the last time this candidate was received
func (*CandidateServerReflexive) LastSent ¶
LastSent returns a time.Time indicating the last time this candidate was sent
func (*CandidateServerReflexive) LocalPreference ¶
func (c *CandidateServerReflexive) LocalPreference() uint16
LocalPreference returns the local preference for this candidate
func (*CandidateServerReflexive) Marshal ¶ added in v2.0.2
func (c *CandidateServerReflexive) Marshal() string
Marshal returns the string representation of the ICECandidate
func (*CandidateServerReflexive) NetworkType ¶
func (c *CandidateServerReflexive) NetworkType() NetworkType
NetworkType returns candidate NetworkType
func (*CandidateServerReflexive) Port ¶
func (c *CandidateServerReflexive) Port() int
Port returns Candidate Port
func (*CandidateServerReflexive) Priority ¶
func (c *CandidateServerReflexive) Priority() uint32
Priority computes the priority for this ICE Candidate
func (*CandidateServerReflexive) RelatedAddress ¶
func (c *CandidateServerReflexive) RelatedAddress() *CandidateRelatedAddress
RelatedAddress returns *CandidateRelatedAddress
func (*CandidateServerReflexive) SetComponent ¶ added in v2.0.3
func (c *CandidateServerReflexive) SetComponent(component uint16)
func (*CandidateServerReflexive) String ¶
func (c *CandidateServerReflexive) String() string
String makes the candidateBase printable
func (*CandidateServerReflexive) Type ¶
func (c *CandidateServerReflexive) Type() CandidateType
Type returns candidate type
type CandidateServerReflexiveConfig ¶
type CandidateServerReflexiveConfig struct { CandidateID string Network string Address string Port int Component uint16 Priority uint32 Foundation string RelAddr string RelPort int }
CandidateServerReflexiveConfig is the config required to create a new CandidateServerReflexive
type CandidateStats ¶
type CandidateStats struct { // Timestamp is the timestamp associated with this object. Timestamp time.Time // ID is the candidate ID ID string // NetworkType represents the type of network interface used by the base of a // local candidate (the address the ICE agent sends from). Only present for // local candidates; it's not possible to know what type of network interface // a remote candidate is using. // // Note: // This stat only tells you about the network interface used by the first "hop"; // it's possible that a connection will be bottlenecked by another type of network. // For example, when using Wi-Fi tethering, the networkType of the relevant candidate // would be "wifi", even when the next hop is over a cellular connection. NetworkType NetworkType // IP is the IP address of the candidate, allowing for IPv4 addresses and // IPv6 addresses, but fully qualified domain names (FQDNs) are not allowed. IP string // Port is the port number of the candidate. Port int // CandidateType is the "Type" field of the ICECandidate. CandidateType CandidateType // Priority is the "Priority" field of the ICECandidate. Priority uint32 // URL is the URL of the TURN or STUN server indicated in the that translated // this IP address. It is the URL address surfaced in an PeerConnectionICEEvent. URL string // RelayProtocol is the protocol used by the endpoint to communicate with the // TURN server. This is only present for local candidates. Valid values for // the TURN URL protocol is one of udp, tcp, or tls. RelayProtocol string // Deleted is true if the candidate has been deleted/freed. For host candidates, // this means that any network resources (typically a socket) associated with the // candidate have been released. For TURN candidates, this means the TURN allocation // is no longer active. // // Only defined for local candidates. For remote candidates, this property is not applicable. Deleted bool }
CandidateStats contains ICE candidate statistics related to the ICETransport objects.
type CandidateType ¶
type CandidateType byte
CandidateType represents the type of candidate
const ( CandidateTypeUnspecified CandidateType = iota CandidateTypeHost CandidateTypeServerReflexive CandidateTypePeerReflexive CandidateTypeRelay )
CandidateType enum
func (CandidateType) Preference ¶
func (c CandidateType) Preference() uint16
Preference returns the preference weight of a CandidateType
4.1.2.2. Guidelines for Choosing Type and Local Preferences The RECOMMENDED values are 126 for host candidates, 100 for server reflexive candidates, 110 for peer reflexive candidates, and 0 for relayed candidates.
func (CandidateType) String ¶
func (c CandidateType) String() string
String makes CandidateType printable
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn represents the ICE connection. At the moment the lifetime of the Conn is equal to the Agent.
func (*Conn) BytesReceived ¶
BytesReceived returns the number of bytes received
func (*Conn) Close ¶
Close implements the Conn Close method. It is used to close the connection. Any calls to Read and Write will be unblocked and return an error.
func (*Conn) LocalAddr ¶
LocalAddr returns the local address of the current selected pair or nil if there is none.
func (*Conn) RemoteAddr ¶
RemoteAddr returns the remote address of the current selected pair or nil if there is none.
func (*Conn) SetReadDeadline ¶
SetReadDeadline is a stub
func (*Conn) SetWriteDeadline ¶
SetWriteDeadline is a stub
type ConnectionState ¶
type ConnectionState int
ConnectionState is an enum showing the state of a ICE Connection
func (ConnectionState) String ¶
func (c ConnectionState) String() string
type GatheringState ¶
type GatheringState int
GatheringState describes the state of the candidate gathering process
const ( // GatheringStateNew indicates candidate gatering is not yet started GatheringStateNew GatheringState = iota + 1 // GatheringStateGathering indicates candidate gatering is ongoing GatheringStateGathering // GatheringStateComplete indicates candidate gatering has been completed GatheringStateComplete )
func (GatheringState) String ¶
func (t GatheringState) String() string
type MulticastDNSMode ¶
type MulticastDNSMode byte
MulticastDNSMode represents the different Multicast modes ICE can run in
const ( // MulticastDNSModeDisabled means remote mDNS candidates will be discarded, and local host candidates will use IPs MulticastDNSModeDisabled MulticastDNSMode = iota + 1 // MulticastDNSModeQueryOnly means remote mDNS candidates will be accepted, and local host candidates will use IPs MulticastDNSModeQueryOnly // MulticastDNSModeQueryAndGather means remote mDNS candidates will be accepted, and local host candidates will use mDNS MulticastDNSModeQueryAndGather )
MulticastDNSMode enum
type NetworkType ¶
type NetworkType int
NetworkType represents the type of network
const ( // NetworkTypeUDP4 indicates UDP over IPv4. NetworkTypeUDP4 NetworkType = iota + 1 // NetworkTypeUDP6 indicates UDP over IPv6. NetworkTypeUDP6 // NetworkTypeTCP4 indicates TCP over IPv4. NetworkTypeTCP4 // NetworkTypeTCP6 indicates TCP over IPv6. NetworkTypeTCP6 )
func (NetworkType) IsIPv4 ¶
func (t NetworkType) IsIPv4() bool
IsIPv4 returns whether the network type is IPv4 or not.
func (NetworkType) IsIPv6 ¶
func (t NetworkType) IsIPv6() bool
IsIPv6 returns whether the network type is IPv6 or not.
func (NetworkType) IsReliable ¶
func (t NetworkType) IsReliable() bool
IsReliable returns true if the network is reliable
func (NetworkType) IsTCP ¶
func (t NetworkType) IsTCP() bool
IsTCP returns true when network is TCP4 or TCP6.
func (NetworkType) IsUDP ¶
func (t NetworkType) IsUDP() bool
IsUDP returns true when network is UDP4 or UDP6.
func (NetworkType) NetworkShort ¶
func (t NetworkType) NetworkShort() string
NetworkShort returns the short network description
func (NetworkType) String ¶
func (t NetworkType) String() string
type PriorityAttr ¶
type PriorityAttr uint32
PriorityAttr represents PRIORITY attribute.
type ProtoType ¶
type ProtoType int
ProtoType indicates the transport protocol type that is used in the ice.URL structure.
func NewProtoType ¶
NewProtoType defines a procedure for creating a new ProtoType from a raw string naming the transport protocol type.
type Role ¶
type Role byte
Role represents ICE agent role, which can be controlling or controlled.
func (Role) MarshalText ¶
MarshalText implements TextMarshaler.
func (*Role) UnmarshalText ¶
UnmarshalText implements TextUnmarshaler.
type SchemeType ¶
type SchemeType int
SchemeType indicates the type of server used in the ice.URL structure.
const ( // SchemeTypeSTUN indicates the URL represents a STUN server. SchemeTypeSTUN SchemeType = iota + 1 // SchemeTypeSTUNS indicates the URL represents a STUNS (secure) server. SchemeTypeSTUNS // SchemeTypeTURN indicates the URL represents a TURN server. SchemeTypeTURN // SchemeTypeTURNS indicates the URL represents a TURNS (secure) server. SchemeTypeTURNS )
func NewSchemeType ¶
func NewSchemeType(raw string) SchemeType
NewSchemeType defines a procedure for creating a new SchemeType from a raw string naming the scheme type.
func (SchemeType) String ¶
func (t SchemeType) String() string
type TCPMux ¶
type TCPMux interface { io.Closer GetConnByUfrag(ufrag string) (net.PacketConn, error) RemoveConnByUfrag(ufrag string) }
TCPMux is allows grouping multiple TCP net.Conns and using them like UDP net.PacketConns. The main implementation of this is TCPMuxDefault, and this interface exists to:
- prevent SEGV panics when TCPMuxDefault is not initialized by using the invalidTCPMux implementation, and
- allow mocking in tests.
type TCPMuxDefault ¶
type TCPMuxDefault struct {
// contains filtered or unexported fields
}
TCPMuxDefault muxes TCP net.Conns into net.PacketConns and groups them by Ufrag. It is a default implementation of TCPMux interface.
func NewTCPMuxDefault ¶
func NewTCPMuxDefault(params TCPMuxParams) *TCPMuxDefault
NewTCPMuxDefault creates a new instance of TCPMuxDefault.
func (*TCPMuxDefault) Close ¶
func (m *TCPMuxDefault) Close() error
Close closes the listener and waits for all goroutines to exit.
func (*TCPMuxDefault) GetConnByUfrag ¶
func (m *TCPMuxDefault) GetConnByUfrag(ufrag string) (net.PacketConn, error)
GetConnByUfrag retrieves an existing or creates a new net.PacketConn.
func (*TCPMuxDefault) LocalAddr ¶
func (m *TCPMuxDefault) LocalAddr() net.Addr
LocalAddr returns the listening address of this TCPMuxDefault.
func (*TCPMuxDefault) RemoveConnByUfrag ¶
func (m *TCPMuxDefault) RemoveConnByUfrag(ufrag string)
RemoveConnByUfrag closes and removes a net.PacketConn by Ufrag.
type TCPMuxParams ¶
type TCPMuxParams struct { Listener net.Listener Logger logging.LeveledLogger ReadBufferSize int }
TCPMuxParams are parameters for TCPMux.
type TCPType ¶
type TCPType int
TCPType is the type of ICE TCP candidate as described in ttps://tools.ietf.org/html/rfc6544#section-4.5
const ( // TCPTypeUnspecified is the default value. For example UDP candidates do not // need this field. TCPTypeUnspecified TCPType = iota // TCPTypeActive is active TCP candidate, which initiates TCP connections. TCPTypeActive // TCPTypePassive is passive TCP candidate, only accepts TCP connections. TCPTypePassive // TCPTypeSimultaneousOpen is like active and passive at the same time. TCPTypeSimultaneousOpen )
func NewTCPType ¶
NewTCPType creates a new TCPType from string.
type UDPMux ¶ added in v2.1.0
type UDPMux interface { io.Closer GetConn(ufrag string) (net.PacketConn, error) RemoveConnByUfrag(ufrag string) }
UDPMux allows multiple connections to go over a single UDP port
type UDPMuxDefault ¶ added in v2.1.0
type UDPMuxDefault struct {
// contains filtered or unexported fields
}
UDPMuxDefault is an implementation of the interface
func NewUDPMuxDefault ¶ added in v2.1.0
func NewUDPMuxDefault(params UDPMuxParams) *UDPMuxDefault
NewUDPMuxDefault creates an implementation of UDPMux
func (*UDPMuxDefault) Close ¶ added in v2.1.0
func (m *UDPMuxDefault) Close() error
Close the mux, no further connections could be created
func (*UDPMuxDefault) GetConn ¶ added in v2.1.1
func (m *UDPMuxDefault) GetConn(ufrag string) (net.PacketConn, error)
GetConn returns a PacketConn given the connection's ufrag and network creates the connection if an existing one can't be found
func (*UDPMuxDefault) IsClosed ¶ added in v2.1.0
func (m *UDPMuxDefault) IsClosed() bool
IsClosed returns true if the mux had been closed
func (*UDPMuxDefault) LocalAddr ¶ added in v2.1.0
func (m *UDPMuxDefault) LocalAddr() net.Addr
LocalAddr returns the listening address of this UDPMuxDefault
func (*UDPMuxDefault) RemoveConnByUfrag ¶ added in v2.1.0
func (m *UDPMuxDefault) RemoveConnByUfrag(ufrag string)
RemoveConnByUfrag stops and removes the muxed packet connection
type UDPMuxParams ¶ added in v2.1.0
type UDPMuxParams struct { Logger logging.LeveledLogger UDPConn *net.UDPConn }
UDPMuxParams are parameters for UDPMux.
type URL ¶
type URL struct { Scheme SchemeType Host string Port int Username string Password string Proto ProtoType }
URL represents a STUN (rfc7064) or TURN (rfc7065) URL
func ParseURL ¶
ParseURL parses a STUN or TURN urls following the ABNF syntax described in https://tools.ietf.org/html/rfc7064 and https://tools.ietf.org/html/rfc7065 respectively.
type UseCandidateAttr ¶
type UseCandidateAttr struct{}
UseCandidateAttr represents USE-CANDIDATE attribute.
func UseCandidate ¶
func UseCandidate() UseCandidateAttr
UseCandidate is shorthand for UseCandidateAttr.
Source Files
¶
- agent.go
- agent_config.go
- agent_stats.go
- candidate.go
- candidate_base.go
- candidate_host.go
- candidate_peer_reflexive.go
- candidate_relay.go
- candidate_server_reflexive.go
- candidatepair.go
- candidatepair_state.go
- candidaterelatedaddress.go
- candidatetype.go
- context.go
- errors.go
- external_ip_mapper.go
- gather.go
- ice.go
- icecontrol.go
- mdns.go
- networktype.go
- priority.go
- rand.go
- role.go
- selection.go
- stats.go
- stun.go
- tcp_mux.go
- tcp_packet_conn.go
- tcptype.go
- transport.go
- udp_mux.go
- udp_muxed_conn.go
- url.go
- usecandidate.go
- util.go