Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ppzqh committed Jun 25, 2024
1 parent 3946a0e commit 453be6f
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 25 deletions.
36 changes: 15 additions & 21 deletions net_sock.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,11 @@ func sockaddrToAddr(sa syscall.Sockaddr) net.Addr {
var a net.Addr
switch sa := sa.(type) {
case *syscall.SockaddrInet4:
a = &net.TCPAddr{
IP: sa.Addr[0:],
Port: sa.Port,
a = &TCPAddr{
TCPAddr: net.TCPAddr{
IP: sa.Addr[0:],
Port: sa.Port,
},
}
case *syscall.SockaddrInet6:
var zone string
Expand All @@ -142,25 +144,17 @@ func sockaddrToAddr(sa syscall.Sockaddr) net.Addr {
}
// if zone == "" && sa.ZoneId != 0 {
// }
a = &net.TCPAddr{
IP: sa.Addr[0:],
Port: sa.Port,
Zone: zone,
a = &TCPAddr{
TCPAddr: net.TCPAddr{
IP: sa.Addr[0:],
Port: sa.Port,
Zone: zone,
},
}
case *syscall.SockaddrUnix:
a = &net.UnixAddr{Net: "unix", Name: sa.Name}
}
return &CachedAddr{Addr: a}
}

type CachedAddr struct {
net.Addr
cachedString string
}

func (a *CachedAddr) String() string {
if a.cachedString == "" {
a.cachedString = a.Addr.String()
a = &UnixAddr{
UnixAddr: net.UnixAddr{Net: "unix", Name: sa.Name},
}
}
return a.cachedString
return a
}
14 changes: 11 additions & 3 deletions net_tcpsock.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ import (
// TCPAddr represents the address of a TCP end point.
type TCPAddr struct {
net.TCPAddr
cachedAddr string
}

func (a *TCPAddr) String() string {
if a.cachedAddr == "" {
a.cachedAddr = a.TCPAddr.String()
}
return a.cachedAddr
}

func (a *TCPAddr) isWildcard() bool {
Expand Down Expand Up @@ -129,7 +137,7 @@ func ResolveTCPAddr(network, address string) (*TCPAddr, error) {
if err != nil {
return nil, err
}
return &TCPAddr{*addr}, nil
return &TCPAddr{TCPAddr: *addr}, nil
}

// TCPConnection implements Connection.
Expand Down Expand Up @@ -231,8 +239,8 @@ func selfConnect(conn *netFD, err error) bool {
if conn.localAddr == nil || conn.remoteAddr == nil {
return true
}
l := conn.localAddr.(*CachedAddr).Addr.(*net.TCPAddr)
r := conn.remoteAddr.(*CachedAddr).Addr.(*net.TCPAddr)
l := conn.localAddr.(*TCPAddr).TCPAddr
r := conn.remoteAddr.(*TCPAddr).TCPAddr
return l.Port == r.Port && l.IP.Equal(r.IP)
}

Expand Down
10 changes: 9 additions & 1 deletion net_unixsock.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ import (
// UnixAddr represents the address of a Unix domain socket end point.
type UnixAddr struct {
net.UnixAddr
cachedAddr string
}

func (a *UnixAddr) String() string {
if a.cachedAddr == "" {
a.cachedAddr = a.UnixAddr.String()
}
return a.cachedAddr
}

func (a *UnixAddr) isWildcard() bool {
Expand Down Expand Up @@ -65,7 +73,7 @@ func ResolveUnixAddr(network, address string) (*UnixAddr, error) {
if err != nil {
return nil, err
}
return &UnixAddr{*addr}, nil
return &UnixAddr{UnixAddr: *addr}, nil
}

// UnixConnection implements Connection.
Expand Down

0 comments on commit 453be6f

Please sign in to comment.