Documentation ¶
Index ¶
- Constants
- type IOEvent
- type IOFlags
- type PollAttachment
- type PollEventHandler
- type Poller
- func (p *Poller) AddRead(pa *PollAttachment, edgeTriggered bool) error
- func (p *Poller) AddReadWrite(pa *PollAttachment, edgeTriggered bool) error
- func (p *Poller) AddWrite(pa *PollAttachment, edgeTriggered bool) error
- func (p *Poller) Close() error
- func (p *Poller) Delete(fd int) error
- func (p *Poller) ModRead(pa *PollAttachment, edgeTriggered bool) error
- func (p *Poller) ModReadWrite(pa *PollAttachment, edgeTriggered bool) error
- func (p *Poller) Polling(callback PollEventHandler) error
- func (p *Poller) Trigger(priority queue.EventPriority, fn queue.TaskFunc, arg interface{}) (err error)
Constants ¶
const ( // InitPollEventsCap represents the initial capacity of poller event-list. InitPollEventsCap = 128 // MaxPollEventsCap is the maximum limitation of events that the poller can process. MaxPollEventsCap = 1024 // MinPollEventsCap is the minimum limitation of events that the poller can process. MinPollEventsCap = 32 // MaxAsyncTasksAtOneTime is the maximum amount of asynchronous tasks that the event-loop will process at one time. MaxAsyncTasksAtOneTime = 256 // ReadEvents represents readable events that are polled by epoll. ReadEvents = unix.EPOLLIN | unix.EPOLLPRI // WriteEvents represents writeable events that are polled by epoll. WriteEvents = unix.EPOLLOUT // ReadWriteEvents represents both readable and writeable events. ReadWriteEvents = ReadEvents | WriteEvents // ErrEvents represents exceptional events that occurred on the local side. ErrEvents = unix.EPOLLERR | unix.EPOLLHUP )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PollAttachment ¶
type PollAttachment struct { FD int Callback PollEventHandler }
PollAttachment is the user data which is about to be stored in "void *ptr" of epoll_data or "void *udata" of kevent.
type PollEventHandler ¶
PollEventHandler is the callback for I/O events notified by the poller.
type Poller ¶
type Poller struct {
// contains filtered or unexported fields
}
Poller represents a poller which is in charge of monitoring file-descriptors.
func (*Poller) AddRead ¶
func (p *Poller) AddRead(pa *PollAttachment, edgeTriggered bool) error
AddRead registers the given file-descriptor with readable event to the poller.
func (*Poller) AddReadWrite ¶
func (p *Poller) AddReadWrite(pa *PollAttachment, edgeTriggered bool) error
AddReadWrite registers the given file-descriptor with readable and writable events to the poller.
func (*Poller) AddWrite ¶
func (p *Poller) AddWrite(pa *PollAttachment, edgeTriggered bool) error
AddWrite registers the given file-descriptor with writable event to the poller.
func (*Poller) ModRead ¶
func (p *Poller) ModRead(pa *PollAttachment, edgeTriggered bool) error
ModRead renews the given file-descriptor with readable event in the poller.
func (*Poller) ModReadWrite ¶
func (p *Poller) ModReadWrite(pa *PollAttachment, edgeTriggered bool) error
ModReadWrite renews the given file-descriptor with readable and writable events in the poller.
func (*Poller) Polling ¶
func (p *Poller) Polling(callback PollEventHandler) error
Polling blocks the current goroutine, waiting for network-events.
func (*Poller) Trigger ¶
func (p *Poller) Trigger(priority queue.EventPriority, fn queue.TaskFunc, arg interface{}) (err error)
Trigger enqueues task and wakes up the poller to process pending tasks. By default, any incoming task will enqueued into urgentAsyncTaskQueue before the threshold of high-priority events is reached. When it happens, any asks other than high-priority tasks will be shunted to asyncTaskQueue.
Note that asyncTaskQueue is a queue of low-priority whose size may grow large and tasks in it may backlog.