cubefs
1// +build linux,!appengine
2
3/*
4*
5* Copyright 2018 gRPC authors.
6*
7* Licensed under the Apache License, Version 2.0 (the "License");
8* you may not use this file except in compliance with the License.
9* You may obtain a copy of the License at
10*
11* http://www.apache.org/licenses/LICENSE-2.0
12*
13* Unless required by applicable law or agreed to in writing, software
14* distributed under the License is distributed on an "AS IS" BASIS,
15* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16* See the License for the specific language governing permissions and
17* limitations under the License.
18*
19*/
20
21package channelz
22
23import (
24"syscall"
25)
26
27// GetSocketOption gets the socket option info of the conn.
28func GetSocketOption(socket interface{}) *SocketOptionData {
29c, ok := socket.(syscall.Conn)
30if !ok {
31return nil
32}
33data := &SocketOptionData{}
34if rawConn, err := c.SyscallConn(); err == nil {
35rawConn.Control(data.Getsockopt)
36return data
37}
38return nil
39}
40