package poll

import "internal/poll"

Package poll supports non-blocking I/O on file descriptors with polling. This supports I/O operations that block only a goroutine, not a thread. This is used by the net and os packages. It uses a poller built into the runtime, with support from the runtime scheduler.

Index

Variables

AcceptFunc is used to hook the accept call.

var CloseFunc func(syscall.Handle) error = syscall.Closesocket

CloseFunc is used to hook the close call.

ConnectExFunc is used to hook the ConnectEx call.

var ErrFileClosing = errors.New("use of closed file")

ErrFileClosing is returned when a file descriptor is used after it has been closed.

var ErrNetClosing = errors.New("use of closed network connection")

ErrNetClosing is returned when a network descriptor is used after it has been closed. Keep this string consistent because of issue #4373: since historically programs have not been able to detect this error, they look for the string.

var ErrNoDeadline = errors.New("file type does not support deadline")

ErrNoDeadline is returned when a request is made to set a deadline on a file type that does not use the poller.

var ErrTimeout error = &TimeoutError{}

ErrTimeout is returned for an expired deadline.

var ReadConsole = syscall.ReadConsole // changed for testing
var TestHookDidWritev = func(wrote int) {}

TestHookDidWritev is a hook for testing writev.

Functions

func PollDescriptor

func PollDescriptor() uintptr

PollDescriptor returns the descriptor being used by the poller, or ^uintptr(0) if there isn't one. This is only used for testing.

func SendFile

func SendFile(fd *FD, src syscall.Handle, n int64) (int64, error)

SendFile wraps the TransmitFile call.

Types

type FD

type FD struct {

	// System file descriptor. Immutable until Close.
	Sysfd syscall.Handle

	// Whether this is a streaming descriptor, as opposed to a
	// packet-based descriptor like a UDP socket.
	IsStream bool

	// Whether a zero byte read indicates EOF. This is false for a
	// message based socket connection.
	ZeroReadIsEOF bool
	// contains filtered or unexported fields
}

FD is a file descriptor. The net and os packages embed this type in a larger type representing a network connection or OS file.

func (*FD) Accept

func (fd *FD) Accept(sysSocket func() (syscall.Handle, error)) (syscall.Handle, []syscall.RawSockaddrAny, uint32, string, error)

Accept handles accepting a socket. The sysSocket parameter is used to allocate the net socket.

func (*FD) Close

func (fd *FD) Close() error

Close closes the FD. The underlying file descriptor is closed by the destroy method when there are no remaining references.

func (*FD) ConnectEx

func (fd *FD) ConnectEx(ra syscall.Sockaddr) error

Call ConnectEx. This doesn't need any locking, since it is only called when the descriptor is first created. This is here rather than in the net package so that it can use fd.wop.

func (*FD) Fchdir

func (fd *FD) Fchdir() error

Fchdir wraps syscall.Fchdir.

func (*FD) Fchmod

func (fd *FD) Fchmod(mode uint32) error

Fchmod wraps syscall.Fchmod.

func (*FD) Fchown

func (fd *FD) Fchown(uid, gid int) error

Fchown wraps syscall.Fchown.

func (*FD) FindNextFile

func (fd *FD) FindNextFile(data *syscall.Win32finddata) error

FindNextFile wraps syscall.FindNextFile.

func (*FD) Fsync

func (fd *FD) Fsync() error

Fsync wraps syscall.Fsync.

func (*FD) Ftruncate

func (fd *FD) Ftruncate(size int64) error

Ftruncate wraps syscall.Ftruncate.

func (*FD) GetFileInformationByHandle

func (fd *FD) GetFileInformationByHandle(data *syscall.ByHandleFileInformation) error

GetFileInformationByHandle wraps GetFileInformationByHandle.

func (*FD) GetFileType

func (fd *FD) GetFileType() (uint32, error)

GetFileType wraps syscall.GetFileType.

func (*FD) Init

func (fd *FD) Init(net string, pollable bool) (string, error)

Init initializes the FD. The Sysfd field should already be set. This can be called multiple times on a single FD. The net argument is a network name from the net package (e.g., "tcp"), or "file" or "console" or "dir". Set pollable to true if fd should be managed by runtime netpoll.

func (*FD) Pread

func (fd *FD) Pread(b []byte, off int64) (int, error)

Pread emulates the Unix pread system call.

func (*FD) Pwrite

func (fd *FD) Pwrite(b []byte, off int64) (int, error)

Pwrite emulates the Unix pwrite system call.

func (*FD) RawControl

func (fd *FD) RawControl(f func(uintptr)) error

RawControl invokes the user-defined function f for a non-IO operation.

func (*FD) RawRead

func (fd *FD) RawRead(f func(uintptr) bool) error

RawRead invokes the user-defined function f for a read operation.

func (*FD) RawWrite

func (fd *FD) RawWrite(f func(uintptr) bool) error

RawWrite invokes the user-defined function f for a write operation.

func (*FD) Read

func (fd *FD) Read(buf []byte) (int, error)

Read implements io.Reader.

func (*FD) ReadFrom

func (fd *FD) ReadFrom(buf []byte) (int, syscall.Sockaddr, error)

ReadFrom wraps the recvfrom network call.

func (*FD) ReadMsg

func (fd *FD) ReadMsg(p []byte, oob []byte) (int, int, int, syscall.Sockaddr, error)

ReadMsg wraps the WSARecvMsg network call.

func (*FD) Seek

func (fd *FD) Seek(offset int64, whence int) (int64, error)

Seek wraps syscall.Seek.

func (*FD) SetDeadline

func (fd *FD) SetDeadline(t time.Time) error

SetDeadline sets the read and write deadlines associated with fd.

func (*FD) SetReadDeadline

func (fd *FD) SetReadDeadline(t time.Time) error

SetReadDeadline sets the read deadline associated with fd.

func (*FD) SetWriteDeadline

func (fd *FD) SetWriteDeadline(t time.Time) error

SetWriteDeadline sets the write deadline associated with fd.

func (*FD) Setsockopt

func (fd *FD) Setsockopt(level, optname int32, optval *byte, optlen int32) error

Setsockopt wraps the setsockopt network call.

func (*FD) SetsockoptIPMreq

func (fd *FD) SetsockoptIPMreq(level, name int, mreq *syscall.IPMreq) error

SetsockoptIPMreq wraps the setsockopt network call with an IPMreq argument.

func (*FD) SetsockoptIPv6Mreq

func (fd *FD) SetsockoptIPv6Mreq(level, name int, mreq *syscall.IPv6Mreq) error

SetsockoptIPv6Mreq wraps the setsockopt network call with an IPv6Mreq argument.

func (*FD) SetsockoptInet4Addr

func (fd *FD) SetsockoptInet4Addr(level, name int, arg [4]byte) error

SetsockoptInet4Addr wraps the setsockopt network call with an IPv4 address.

func (*FD) SetsockoptInt

func (fd *FD) SetsockoptInt(level, name, arg int) error

SetsockoptInt wraps the setsockopt network call with an int argument.

func (*FD) SetsockoptLinger

func (fd *FD) SetsockoptLinger(level, name int, l *syscall.Linger) error

SetsockoptLinger wraps the setsockopt network call with a Linger argument.

func (*FD) Shutdown

func (fd *FD) Shutdown(how int) error

Shutdown wraps the shutdown network call.

func (*FD) WSAIoctl

func (fd *FD) WSAIoctl(iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *syscall.Overlapped, completionRoutine uintptr) error

WSAIoctl wraps the WSAIoctl network call.

func (*FD) Write

func (fd *FD) Write(buf []byte) (int, error)

Write implements io.Writer.

func (*FD) WriteMsg

func (fd *FD) WriteMsg(p []byte, oob []byte, sa syscall.Sockaddr) (int, int, error)

WriteMsg wraps the WSASendMsg network call.

func (*FD) WriteTo

func (fd *FD) WriteTo(buf []byte, sa syscall.Sockaddr) (int, error)

WriteTo wraps the sendto network call.

func (*FD) Writev

func (fd *FD) Writev(buf *[][]byte) (int64, error)

Writev emulates the Unix writev system call.

type TimeoutError

type TimeoutError struct{}

TimeoutError is returned for an expired deadline.

func (*TimeoutError) Error

func (e *TimeoutError) Error() string

Implement the net.Error interface.

func (*TimeoutError) Temporary

func (e *TimeoutError) Temporary() bool

func (*TimeoutError) Timeout

func (e *TimeoutError) Timeout() bool

Source Files

fd.go fd_mutex.go fd_poll_runtime.go fd_posix.go fd_windows.go hook_windows.go sendfile_windows.go sockopt.go sockopt_windows.go sockoptip.go

Version
v1.11.10
Published
May 6, 2019
Platform
windows/amd64
Imports
12 packages
Last checked
2 minutes ago

Tools for package owners.