mirror of https://github.com/ehang-io/nps
47 lines
943 B
Go
47 lines
943 B
Go
// +build windows
|
|
|
|
package mux
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/xtaci/kcp-go"
|
|
"net"
|
|
"os"
|
|
)
|
|
|
|
func sysGetSock(fd *os.File) (bufferSize int, err error) {
|
|
// https://github.com/golang/sys/blob/master/windows/syscall_windows.go#L1184
|
|
// not support, WTF???
|
|
// Todo
|
|
// return syscall.GetsockoptInt((syscall.Handle)(unsafe.Pointer(fd.Fd())), syscall.SOL_SOCKET, syscall.SO_RCVBUF)
|
|
bufferSize = 10 * 1024 * 1024
|
|
return
|
|
}
|
|
|
|
func getConnFd(c net.Conn) (fd *os.File, err error) {
|
|
switch c.(type) {
|
|
case *net.TCPConn:
|
|
//fd, err = c.(*net.TCPConn).File()
|
|
//if err != nil {
|
|
// return
|
|
//}
|
|
return
|
|
case *net.UDPConn:
|
|
//fd, err = c.(*net.UDPConn).File()
|
|
//if err != nil {
|
|
// return
|
|
//}
|
|
return
|
|
case *kcp.UDPSession:
|
|
//fd, err = (*net.UDPConn)(unsafe.Pointer(c.(*kcp.UDPSession))).File()
|
|
//if err != nil {
|
|
// return
|
|
//}
|
|
// Todo
|
|
return
|
|
default:
|
|
err = errors.New("mux:unknown conn type, only tcp or kcp")
|
|
return
|
|
}
|
|
}
|