1 Star 0 Fork 1

lsj/go-torrent

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
networks.go 935 Bytes
一键复制 编辑 原始数据 按行查看 历史
package torrent
import "strings"
var allPeerNetworks = func() (ret []network) {
for _, s := range []string{"tcp4", "tcp6", "udp4", "udp6"} {
ret = append(ret, parseNetworkString(s))
}
return
}()
type network struct {
Ipv4 bool
Ipv6 bool
Udp bool
Tcp bool
}
func (n network) String() (ret string) {
a := func(b bool, s string) {
if b {
ret += s
}
}
a(n.Udp, "udp")
a(n.Tcp, "tcp")
a(n.Ipv4, "4")
a(n.Ipv6, "6")
return
}
func parseNetworkString(network string) (ret network) {
c := func(s string) bool {
return strings.Contains(network, s)
}
ret.Ipv4 = c("4")
ret.Ipv6 = c("6")
ret.Udp = c("udp")
ret.Tcp = c("tcp")
return
}
func peerNetworkEnabled(n network, cfg *ClientConfig) bool {
if cfg.DisableUTP && n.Udp {
return false
}
if cfg.DisableTCP && n.Tcp {
return false
}
if cfg.DisableIPv6 && n.Ipv6 {
return false
}
if cfg.DisableIPv4 && n.Ipv4 {
return false
}
return true
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/leesj/go-torrent.git
git@gitee.com:leesj/go-torrent.git
leesj
go-torrent
go-torrent
master

搜索帮助