MCPcopy Create free account
hub / github.com/cloudwego/netpoll / Wait

Method Wait

poll_default_linux.go:90–115  ·  view source on GitHub ↗

Wait implements Poll.

()

Source from the content-addressed store, hash-verified

88
89// Wait implements Poll.
90func (p *defaultPoll) Wait() (err error) {
91 // init
92 caps, msec, n := barriercap, -1, 0
93 p.Reset(128, caps)
94 // wait
95 for {
96 if n == p.size && p.size < 128*1024 {
97 p.Reset(p.size<<1, caps)
98 }
99 n, err = EpollWait(p.fd, p.events, msec)
100 if err != nil && err != syscall.EINTR {
101 return err
102 }
103 if n <= 0 {
104 msec = -1
105 runtime.Gosched()
106 continue
107 }
108 msec = 0
109 if p.Handler(p.events[:n]) {
110 return nil
111 }
112 // we can make sure that there is no op remaining if Handler finished
113 p.opcache.free()
114 }
115}
116
117func (p *defaultPoll) handler(events []epollevent) (closed bool) {
118 var triggerRead, triggerWrite, triggerHup, triggerError bool

Callers

nothing calls this directly

Calls 3

freeMethod · 0.80
EpollWaitFunction · 0.70
ResetMethod · 0.45

Tested by

no test coverage detected