epoller

package
v2.0.0-rc.124 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 16, 2024 License: MIT Imports: 6 Imported by: 0

README

Epoller

epoll implementation for connections in Linux, MacOS.

Its target is implementing a simple epoll lib for network connections, so you should see it only contains few methods about net.Conn:

This is a copy of https://github.com/smallnest/epoller (v1.2.0) to remove Windows support and avoid the need for CGO. On Windows, we handle websocket messages in a separate goroutine, without epoll.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SocketFD

func SocketFD(conn net.Conn) int

Types

type ConnImpl

type ConnImpl struct {
	net.Conn
	// contains filtered or unexported fields
}

ConnImpl is a net.Conn with GetFD() method.

func (ConnImpl) GetFD

func (c ConnImpl) GetFD() int

type Epoll

type Epoll struct {
	// contains filtered or unexported fields
}

Epoll is an epoll based poller.

func NewPoller

func NewPoller(connBufferSize int, pollTimeout time.Duration) (*Epoll, error)

NewPoller creates a new epoll poller.

func (*Epoll) Add

func (e *Epoll) Add(conn net.Conn) error

Add adds a connection to the poller.

func (*Epoll) Close

func (e *Epoll) Close(closeConns bool) error

Close closes the poller. If closeConns is true, it will close all the connections.

func (*Epoll) Remove

func (e *Epoll) Remove(conn net.Conn) error

Remove removes a connection from the poller.

func (*Epoll) Wait

func (e *Epoll) Wait(count int) ([]net.Conn, error)

Wait waits for at most count events and returns the connections.

type Poller

type Poller interface {
	// Add adds the connection to poller.
	Add(conn net.Conn) error
	// Remove removes the connection from poller and closes it.
	Remove(conn net.Conn) error
	// Wait waits for at most count events and returns the connections.
	Wait(count int) ([]net.Conn, error)
	// Close closes the poller. If closeConns is true, it will close all the connections.
	Close(closeConns bool) error
}

Poller is the interface for epoll/kqueue poller, special for network connections.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL