family int
sotype int
isConnected bool
net string
laddr Addr
raddr Addr
}
func (fd *netFD ) setAddr (laddr , raddr Addr ) {
fd .laddr = laddr
fd .raddr = raddr
runtime .SetFinalizer (fd , (*netFD ).Close )
}
func (fd *netFD ) Close () error {
runtime .SetFinalizer (fd , nil )
return fd .pfd .Close ()
}
func (fd *netFD ) shutdown (how int ) error {
err := fd .pfd .Shutdown (how )
runtime .KeepAlive (fd )
return wrapSyscallError ("shutdown" , err )
}
func (fd *netFD ) closeRead () error {
return fd .shutdown (syscall .SHUT_RD )
}
func (fd *netFD ) closeWrite () error {
return fd .shutdown (syscall .SHUT_WR )
}
func (fd *netFD ) Read (p []byte ) (n int , err error ) {
n , err = fd .pfd .Read (p )
runtime .KeepAlive (fd )
return n , wrapSyscallError (readSyscallName , err )
}
func (fd *netFD ) readFrom (p []byte ) (n int , sa syscall .Sockaddr , err error ) {
n , sa , err = fd .pfd .ReadFrom (p )
runtime .KeepAlive (fd )
return n , sa , wrapSyscallError (readFromSyscallName , err )
}
func (fd *netFD ) readMsg (p []byte , oob []byte ) (n , oobn , flags int , sa syscall .Sockaddr , err error ) {
n , oobn , flags , sa , err = fd .pfd .ReadMsg (p , oob )
runtime .KeepAlive (fd )
return n , oobn , flags , sa , wrapSyscallError (readMsgSyscallName , err )
}
func (fd *netFD ) Write (p []byte ) (nn int , err error ) {
nn , err = fd .pfd .Write (p )
runtime .KeepAlive (fd )
return nn , wrapSyscallError (writeSyscallName , err )
}
func (fd *netFD ) writeTo (p []byte , sa syscall .Sockaddr ) (n int , err error ) {
n , err = fd .pfd .WriteTo (p , sa )
runtime .KeepAlive (fd )
return n , wrapSyscallError (writeToSyscallName , err )
}
func (fd *netFD ) writeMsg (p []byte , oob []byte , sa syscall .Sockaddr ) (n int , oobn int , err error ) {
n , oobn , err = fd .pfd .WriteMsg (p , oob , sa )
runtime .KeepAlive (fd )
return n , oobn , wrapSyscallError (writeMsgSyscallName , err )
}
func (fd *netFD ) SetDeadline (t time .Time ) error {
return fd .pfd .SetDeadline (t )
}
func (fd *netFD ) SetReadDeadline (t time .Time ) error {
return fd .pfd .SetReadDeadline (t )
}
func (fd *netFD ) SetWriteDeadline (t time .Time ) error {
return fd .pfd .SetWriteDeadline (t )