github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/net/internal/netpoll/epoll_events.go (about)

     1  // +build linux
     2  
     3  package netpoll
     4  
     5  import "golang.org/x/sys/unix"
     6  
     7  const (
     8  	// InitEvents represents the initial length of poller event-list.
     9  	InitEvents = 128
    10  	// ErrEvents represents exceptional events that are not read/write, like socket being closed,
    11  	// reading/writing from/to a closed socket, etc.
    12  	ErrEvents = unix.EPOLLERR | unix.EPOLLHUP | unix.EPOLLRDHUP
    13  	// OutEvents combines EPOLLOUT event and some exceptional events.
    14  	OutEvents = ErrEvents | unix.EPOLLOUT
    15  	// InEvents combines EPOLLIN/EPOLLPRI events and some exceptional events.
    16  	InEvents = ErrEvents | unix.EPOLLIN | unix.EPOLLPRI
    17  )
    18  
    19  type eventList struct {
    20  	size   int
    21  	events []unix.EpollEvent
    22  }
    23  
    24  func newEventList(size int) *eventList {
    25  	return &eventList{size, make([]unix.EpollEvent, size)}
    26  }
    27  
    28  func (el *eventList) increase() {
    29  	el.size <<= 1
    30  	el.events = make([]unix.EpollEvent, el.size)
    31  }