ceremonyclient/go-libp2p/p2p/metricshelper/conn.go
2024-10-12 11:55:17 -07:00

35 lines
800 B
Go

package metricshelper
import ma "github.com/multiformats/go-multiaddr"
var transports = [...]int{ma.P_CIRCUIT, ma.P_WEBRTC, ma.P_WEBRTC_DIRECT, ma.P_WEBTRANSPORT, ma.P_QUIC, ma.P_QUIC_V1, ma.P_WSS, ma.P_WS, ma.P_TCP}
func GetTransport(a ma.Multiaddr) string {
for _, t := range transports {
if _, err := a.ValueForProtocol(t); err == nil {
return ma.ProtocolWithCode(t).Name
}
}
return "other"
}
func GetIPVersion(addr ma.Multiaddr) (string, error) {
version := "unknown"
var err error
ma.ForEach(addr, func(c ma.Component, e error) bool {
if e != nil {
err = e
return false
}
if c.Protocol().Code == ma.P_IP4 {
version = "ip4"
return false
} else if c.Protocol().Code == ma.P_IP6 {
version = "ip6"
return false
}
return true
})
return version, err
}