Skip to content

Commit

Permalink
Make kqueue code more similar to epoll code
Browse files Browse the repository at this point in the history
  • Loading branch information
njsmith committed Jun 2, 2020
1 parent c6697db commit f1db80b
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions trio/_core/_io_kqueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def __attrs_post_init__(self):
self._force_wakeup.wakeup_sock, select.KQ_FILTER_READ, select.KQ_EV_ADD
)
self._kqueue.control([force_wakeup_event], 0)
self._force_wakeup_fd = self._force_wakeup.wakeup_sock.fileno()

def statistics(self):
tasks_waiting = 0
Expand Down Expand Up @@ -66,14 +67,10 @@ def get_events(self, timeout):
def process_events(self, events):
for event in events:
key = (event.ident, event.filter)
try:
receiver = self._registered[key]
except KeyError:
if event.ident == self._force_wakeup.wakeup_sock.fileno():
self._force_wakeup.drain()
continue
else: # pragma: no cover
raise
if event.ident == self._force_wakeup_fd:
self._force_wakeup.drain()
continue
receiver = self._registered[key]
if event.flags & select.KQ_EV_ONESHOT:
del self._registered[key]
if type(receiver) is _core.Task:
Expand Down

0 comments on commit f1db80b

Please sign in to comment.