sysGetsock_nowindows.go 576 B

12345678910111213141516171819202122232425262728293031323334
  1. // +build !windows
  2. package mux
  3. import (
  4. "errors"
  5. "net"
  6. "os"
  7. "syscall"
  8. )
  9. func sysGetSock(fd *os.File) (bufferSize int, err error) {
  10. return syscall.GetsockoptInt(int(fd.Fd()), syscall.SOL_SOCKET, syscall.SO_RCVBUF)
  11. }
  12. func getConnFd(c net.Conn) (fd *os.File, err error) {
  13. switch c.(type) {
  14. case *net.TCPConn:
  15. fd, err = c.(*net.TCPConn).File()
  16. if err != nil {
  17. return
  18. }
  19. return
  20. case *net.UDPConn:
  21. fd, err = c.(*net.UDPConn).File()
  22. if err != nil {
  23. return
  24. }
  25. return
  26. default:
  27. err = errors.New("mux:unknown conn type, only tcp or kcp")
  28. return
  29. }
  30. }