Documentation
¶
Index ¶
- Constants
- Variables
- type CallbackFn
- type Config
- type Desc
- func Handle(conn net.Conn, event Event) (*Desc, error)
- func HandleRead(conn net.Conn) (*Desc, error)
- func HandleReadOnce(conn net.Conn) (*Desc, error)
- func HandleReadWrite(conn net.Conn) (*Desc, error)
- func HandleWrite(conn net.Conn) (*Desc, error)
- func HandleWriteOnce(conn net.Conn) (*Desc, error)
- func Must(desc *Desc, err error) *Desc
- type Epoll
- type EpollConfig
- type EpollEvent
- type Event
- type Poller
Constants ¶
const ( EPOLLIN EpollEvent = unix.EPOLLIN EPOLLOUT = unix.EPOLLOUT EPOLLRDHUP = unix.EPOLLRDHUP EPOLLPRI = unix.EPOLLPRI EPOLLERR = unix.EPOLLERR EPOLLHUP = unix.EPOLLHUP EPOLLET = unix.EPOLLET EPOLLONESHOT = unix.EPOLLONESHOT )
EpollEvents that are mapped to epoll_event.events possible values.
const ( // EventHup is indicates that some side of i/o operations (receive, send or // both) is closed. // Usually (depending on operating system and its version) the EventReadHup // or EventWriteHup are also set int Event value. EventHup Event = 0x10 EventReadHup = 0x20 EventWriteHup = 0x40 EventErr = 0x80 // EventPollerClosed is a special Event value the receipt of which means that the // Poller instance is closed. EventPollerClosed = 0x8000 )
Variables ¶
var ( // ErrNotFiler is returned by Handle* functions to indicate that given // net.Conn does not provide access to its file descriptor. ErrNotFiler = fmt.Errorf("could not get file descriptor") // ErrClosed is returned by Poller methods to indicate that instance is // closed and operation could not be processed. ErrClosed = fmt.Errorf("poller instance is closed") // ErrRegistered is returned by Poller Start() method to indicate that // connection with the same underlying file descriptor is already // registered inside instance. ErrRegistered = fmt.Errorf("file descriptor is already registered in poller instance") // ErrNotRegistered is returned by Poller Stop() and Resume() methods to // indicate that connection with the same underlying file descriptor was // not registered before within the poller instance. ErrNotRegistered = fmt.Errorf("file descriptor was not registered before in poller instance") )
Functions ¶
This section is empty.
Types ¶
type CallbackFn ¶
type CallbackFn func(Event)
CallbackFn is a function that will be called on kernel i/o event notification.
type Config ¶
type Config struct { // OnWaitError will be called from goroutine, waiting for events OnWaitError func(error) }
Config contains options for Poller configuration.
type Desc ¶
type Desc struct {
// contains filtered or unexported fields
}
Desc is a network connection within netpoll descriptor. Its methods are not goroutine safe.
func Handle ¶
Handle creates new Desc with given conn and event. Returned descriptor could be used as argument to Start(), Resume() and Stop() methods of some Poller implementation.
func HandleRead ¶
HandleRead creates read descriptor for further use in Poller methods. It is the same as Handle(conn, EventRead|EventEdgeTriggered)
func HandleReadOnce ¶
HandleReadOnce creates read descriptor for further use in Poller methods. It is the same as Handle(conn, EventRead|EventOneShot).
func HandleReadWrite ¶
HandleReadWrite creates read and write descriptor for further use in Poller methods. It is the same as Handle(conn, EventRead|EventWrite|EventEdgeTriggered).
func HandleWrite ¶
HandleWrite creates write descriptor for further use in Poller methods. It is the same as Handle(conn, EventWrite|EventEdgeTriggered).
func HandleWriteOnce ¶
HandleWriteOnce creates write descriptor for further use in Poller methods. It is the same as Handle(conn, EventWrite|EventOneShot).
type Epoll ¶
type Epoll struct {
// contains filtered or unexported fields
}
Epoll represents single epoll instance.
func EpollCreate ¶
func EpollCreate(c *EpollConfig) (*Epoll, error)
EpollCreate creates new epoll instance. It starts the wait loop in separate goroutine.
func (*Epoll) Add ¶
func (ep *Epoll) Add(fd int, events EpollEvent, cb func(EpollEvent)) (err error)
Add adds fd to epoll set with given events. Callback will be called on each received event from epoll. Note that _EPOLLCLOSED is triggerd for every cb when epoll closed.
type EpollConfig ¶
type EpollConfig struct { // OnWaitError will be called from goroutine, waiting for events. OnWaitError func(error) }
EpollConfig contains options for Epoll instance configuration.
type EpollEvent ¶
type EpollEvent uint32
EpollEvent represents epoll events configuration bit mask.
func (EpollEvent) String ¶
func (evt EpollEvent) String() (str string)
String returns a string representation of EpollEvent.
type Event ¶
type Event uint16
Event represents netpoll configuration bit mask.
const ( EventRead Event = 0x1 EventWrite = 0x2 )
Event values that denote the type of events that caller want to receive.
Event values that configure the Poller's behavior.
type Poller ¶
type Poller interface { // Start adds desc to the observation list. // // Note that if desc was configured with OneShot event, then poller will // remove it from its observation list. If you will be interested in // receiving events after the callback, call Resume(desc). // // Note that Resume() call directly inside desc's callback could cause // deadlock. // // Note that multiple calls with same desc will produce unexpected // behavior. Start(*Desc, CallbackFn) error // Stop removes desc from the observation list. // // Note that it does not call desc.Close(). Stop(*Desc) error // Resume enables observation of desc. // // It is useful when desc was configured with EventOneShot. // It should be called only after Start(). // // Note that if there no need to observe desc anymore, you should call // Stop() to prevent memory leaks. Resume(*Desc) error }
Poller describes an object that implements logic of polling connections for i/o events such as availability of read() or write() operations.