package channelz
import (
)
type SocketOptionData struct {
Linger *unix.Linger
RecvTimeout *unix.Timeval
SendTimeout *unix.Timeval
TCPInfo *unix.TCPInfo
}
func ( *SocketOptionData) ( uintptr) {
if , := unix.GetsockoptLinger(int(), syscall.SOL_SOCKET, syscall.SO_LINGER); == nil {
.Linger =
}
if , := unix.GetsockoptTimeval(int(), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); == nil {
.RecvTimeout =
}
if , := unix.GetsockoptTimeval(int(), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); == nil {
.SendTimeout =
}
if , := unix.GetsockoptTCPInfo(int(), syscall.SOL_TCP, syscall.TCP_INFO); == nil {
.TCPInfo =
}
}
func ( any) *SocketOptionData {
, := .(syscall.Conn)
if ! {
return nil
}
:= &SocketOptionData{}
if , := .SyscallConn(); == nil {
.Control(.Getsockopt)
return
}
return nil
}