• Mikio Hara's avatar
    net, internal/syscall/unix: add SocketConn, SocketPacketConn · 6f7961da
    Mikio Hara authored
    FileConn and FilePacketConn APIs accept user-configured socket
    descriptors to make them work together with runtime-integrated network
    poller, but there's a limitation. The APIs reject protocol sockets that
    are not supported by standard library. It's very hard for the net,
    syscall packages to look after all platform, feature-specific sockets.
    
    This change allows various platform, feature-specific socket descriptors
    to use runtime-integrated network poller by using SocketConn,
    SocketPacketConn APIs that bridge between the net, syscall packages and
    platforms.
    
    New exposed APIs:
    pkg net, func SocketConn(*os.File, SocketAddr) (Conn, error)
    pkg net, func SocketPacketConn(*os.File, SocketAddr) (PacketConn, error)
    pkg net, type SocketAddr interface { Addr, Raw }
    pkg net, type SocketAddr interface, Addr([]uint8) Addr
    pkg net, type SocketAddr interface, Raw(Addr) []uint8
    
    Fixes #10565.
    
    Change-Id: Iec57499b3d84bb5cb0bcf3f664330c535eec11e3
    Reviewed-on: https://go-review.googlesource.com/9275Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    6f7961da
socket.go 1.27 KB