MCPcopy
hub / github.com/grpc/grpc-go / sockoptToProto

Function sockoptToProto

channelz/internal/protoconv/sockopt_linux.go:38–125  ·  view source on GitHub ↗
(skopts *channelz.SocketOptionData)

Source from the content-addressed store, hash-verified

36}
37
38func sockoptToProto(skopts *channelz.SocketOptionData) []*channelzpb.SocketOption {
39 if skopts == nil {
40 return nil
41 }
42 var opts []*channelzpb.SocketOption
43 if skopts.Linger != nil {
44 additional, err := anypb.New(&channelzpb.SocketOptionLinger{
45 Active: skopts.Linger.Onoff != 0,
46 Duration: convertToPbDuration(int64(skopts.Linger.Linger), 0),
47 })
48 if err == nil {
49 opts = append(opts, &channelzpb.SocketOption{
50 Name: "SO_LINGER",
51 Additional: additional,
52 })
53 } else {
54 logger.Warningf("Failed to marshal socket options linger %+v: %v", skopts.Linger, err)
55 }
56 }
57 if skopts.RecvTimeout != nil {
58 additional, err := anypb.New(&channelzpb.SocketOptionTimeout{
59 Duration: convertToPbDuration(int64(skopts.RecvTimeout.Sec), int64(skopts.RecvTimeout.Usec)),
60 })
61 if err == nil {
62 opts = append(opts, &channelzpb.SocketOption{
63 Name: "SO_RCVTIMEO",
64 Additional: additional,
65 })
66 } else {
67 logger.Warningf("Failed to marshal socket options receive timeout %+v: %v", skopts.RecvTimeout, err)
68 }
69 }
70 if skopts.SendTimeout != nil {
71 additional, err := anypb.New(&channelzpb.SocketOptionTimeout{
72 Duration: convertToPbDuration(int64(skopts.SendTimeout.Sec), int64(skopts.SendTimeout.Usec)),
73 })
74 if err == nil {
75 opts = append(opts, &channelzpb.SocketOption{
76 Name: "SO_SNDTIMEO",
77 Additional: additional,
78 })
79 } else {
80 logger.Warningf("Failed to marshal socket options send timeout %+v: %v", skopts.SendTimeout, err)
81 }
82 }
83 if skopts.TCPInfo != nil {
84 additional, err := anypb.New(&channelzpb.SocketOptionTcpInfo{
85 TcpiState: uint32(skopts.TCPInfo.State),
86 TcpiCaState: uint32(skopts.TCPInfo.Ca_state),
87 TcpiRetransmits: uint32(skopts.TCPInfo.Retransmits),
88 TcpiProbes: uint32(skopts.TCPInfo.Probes),
89 TcpiBackoff: uint32(skopts.TCPInfo.Backoff),
90 TcpiOptions: uint32(skopts.TCPInfo.Options),
91 // https://golang.org/pkg/syscall/#TCPInfo
92 // TCPInfo struct does not contain info about TcpiSndWscale and TcpiRcvWscale.
93 TcpiRto: skopts.TCPInfo.Rto,
94 TcpiAto: skopts.TCPInfo.Ato,
95 TcpiSndMss: skopts.TCPInfo.Snd_mss,

Callers 1

socketToProtoFunction · 0.70

Calls 2

convertToPbDurationFunction · 0.85
WarningfMethod · 0.65

Tested by

no test coverage detected