Server IP : 2a02:4780:11:1359:0:1d43:a566:2 / Your IP : 216.73.216.161 Web Server : LiteSpeed System : Linux in-mum-web1259.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u490972518 ( 490972518) PHP Version : 5.6.40 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF Directory (0755) : /home/../opt/golang/1.22.0/src/context/../net/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
// Copyright 2023 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build wasip1 package net import ( "os" "syscall" _ "unsafe" // for go:linkname ) func fileListener(f *os.File) (Listener, error) { filetype, err := fd_fdstat_get_type(f.PollFD().Sysfd) if err != nil { return nil, err } net, err := fileListenNet(filetype) if err != nil { return nil, err } pfd := f.PollFD().Copy() fd := newPollFD(net, pfd) if err := fd.init(); err != nil { pfd.Close() return nil, err } return newFileListener(fd), nil } func fileConn(f *os.File) (Conn, error) { filetype, err := fd_fdstat_get_type(f.PollFD().Sysfd) if err != nil { return nil, err } net, err := fileConnNet(filetype) if err != nil { return nil, err } pfd := f.PollFD().Copy() fd := newPollFD(net, pfd) if err := fd.init(); err != nil { pfd.Close() return nil, err } return newFileConn(fd), nil } func filePacketConn(f *os.File) (PacketConn, error) { return nil, syscall.ENOPROTOOPT } func fileListenNet(filetype syscall.Filetype) (string, error) { switch filetype { case syscall.FILETYPE_SOCKET_STREAM: return "tcp", nil case syscall.FILETYPE_SOCKET_DGRAM: return "", syscall.EOPNOTSUPP default: return "", syscall.ENOTSOCK } } func fileConnNet(filetype syscall.Filetype) (string, error) { switch filetype { case syscall.FILETYPE_SOCKET_STREAM: return "tcp", nil case syscall.FILETYPE_SOCKET_DGRAM: return "udp", nil default: return "", syscall.ENOTSOCK } } func newFileListener(fd *netFD) Listener { switch fd.net { case "tcp": return &TCPListener{fd: fd} default: panic("unsupported network for file listener: " + fd.net) } } func newFileConn(fd *netFD) Conn { switch fd.net { case "tcp": return &TCPConn{conn{fd: fd}} case "udp": return &UDPConn{conn{fd: fd}} default: panic("unsupported network for file connection: " + fd.net) } } // This helper is implemented in the syscall package. It means we don't have // to redefine the fd_fdstat_get host import or the fdstat struct it // populates. // //go:linkname fd_fdstat_get_type syscall.fd_fdstat_get_type func fd_fdstat_get_type(fd int) (uint8, error)