| 12345678910111213141516171819202122232425 | 
							- package internal
 
- import (
 
- 	"errors"
 
- 	"net"
 
- 	"reflect"
 
- )
 
- var (
 
- 	ErrInvalidConn = errors.New("Invalid Connection.")
 
- )
 
- func GetSysFd(conn net.Conn) (int, error) {
 
- 	cv := reflect.ValueOf(conn)
 
- 	switch ce := cv.Elem(); ce.Kind() {
 
- 	case reflect.Struct:
 
- 		netfd := ce.FieldByName("conn").FieldByName("fd")
 
- 		switch fe := netfd.Elem(); fe.Kind() {
 
- 		case reflect.Struct:
 
- 			fd := fe.FieldByName("sysfd")
 
- 			return int(fd.Int()), nil
 
- 		}
 
- 	}
 
- 	return 0, ErrInvalidConn
 
- }
 
 
  |