添加 listen和dial 自定义network的功能,closes #91

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent ccc4ed03ef
commit 54323312d8
2 changed files with 20 additions and 1 deletions

View File

@@ -7,12 +7,16 @@ import (
"time"
)
var (
CustomDialerMap = make(map[string]func(address string, timeout time.Duration) (net.Conn, error))
)
func (a *Addr) Dial() (net.Conn, error) {
var istls bool
var resultConn net.Conn
var err error
switch a.Network {
switch n := a.Network; n {
case "":
a.Network = "tcp"
goto tcp
@@ -30,6 +34,11 @@ func (a *Addr) Dial() (net.Conn, error) {
return DialUDP(ua)
default:
if len(CustomDialerMap) > 0 {
if f := CustomDialerMap[n]; f != nil {
return f(a.String(), time.Second*15)
}
}
goto defaultPart

View File

@@ -13,6 +13,10 @@ import (
"go.uber.org/zap"
)
var (
CustomListenerMap = make(map[string]func(address string) (net.Listener, error))
)
func loopAccept(listener net.Listener, xver int, acceptFunc func(net.Conn)) {
if xver > 0 {
@@ -147,6 +151,12 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun
fallthrough
default:
if len(CustomListenerMap) > 0 {
if f := CustomListenerMap[network]; f != nil {
return f(addr)
}
}
listener, err = net.Listen(network, addr)
if err != nil {
return