package webrtc
import (
"fmt"
"github.com/pion/ice/v4"
)
type ICECandidateType int
const (
ICECandidateTypeUnknown ICECandidateType = iota
ICECandidateTypeHost
ICECandidateTypeSrflx
ICECandidateTypePrflx
ICECandidateTypeRelay
)
const (
iceCandidateTypeHostStr = "host"
iceCandidateTypeSrflxStr = "srflx"
iceCandidateTypePrflxStr = "prflx"
iceCandidateTypeRelayStr = "relay"
)
func NewICECandidateType (raw string ) (ICECandidateType , error ) {
switch raw {
case iceCandidateTypeHostStr :
return ICECandidateTypeHost , nil
case iceCandidateTypeSrflxStr :
return ICECandidateTypeSrflx , nil
case iceCandidateTypePrflxStr :
return ICECandidateTypePrflx , nil
case iceCandidateTypeRelayStr :
return ICECandidateTypeRelay , nil
default :
return ICECandidateTypeUnknown , fmt .Errorf ("%w: %s" , errICECandidateTypeUnknown , raw )
}
}
func (t ICECandidateType ) String () string {
switch t {
case ICECandidateTypeHost :
return iceCandidateTypeHostStr
case ICECandidateTypeSrflx :
return iceCandidateTypeSrflxStr
case ICECandidateTypePrflx :
return iceCandidateTypePrflxStr
case ICECandidateTypeRelay :
return iceCandidateTypeRelayStr
default :
return ErrUnknownType .Error()
}
}
func getCandidateType(candidateType ice .CandidateType ) (ICECandidateType , error ) {
switch candidateType {
case ice .CandidateTypeHost :
return ICECandidateTypeHost , nil
case ice .CandidateTypeServerReflexive :
return ICECandidateTypeSrflx , nil
case ice .CandidateTypePeerReflexive :
return ICECandidateTypePrflx , nil
case ice .CandidateTypeRelay :
return ICECandidateTypeRelay , nil
default :
err := fmt .Errorf ("%w: %s" , errICEInvalidConvertCandidateType , candidateType .String ())
return ICECandidateTypeUnknown , err
}
}
func (t ICECandidateType ) MarshalText () ([]byte , error ) {
return []byte (t .String ()), nil
}
func (t *ICECandidateType ) UnmarshalText (b []byte ) error {
var err error
*t , err = NewICECandidateType (string (b ))
return err
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .