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

     1  // +build darwin netbsd freebsd openbsd dragonfly
     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 = 64
    10  	// EVFilterWrite represents writeable events from sockets.
    11  	EVFilterWrite = unix.EVFILT_WRITE
    12  	// EVFilterRead represents readable events from sockets.
    13  	EVFilterRead = unix.EVFILT_READ
    14  	// EVFilterSock represents exceptional events that are not read/write, like socket being closed,
    15  	// reading/writing from/to a closed socket, etc.
    16  	EVFilterSock = -0xd
    17  )
    18  
    19  type eventList struct {
    20  	size   int
    21  	events []unix.Kevent_t
    22  }
    23  
    24  func newEventList(size int) *eventList {
    25  	return &eventList{size, make([]unix.Kevent_t, size)}
    26  }
    27  
    28  func (el *eventList) increase() {
    29  	el.size <<= 1
    30  	el.events = make([]unix.Kevent_t, el.size)
    31  }