update
This commit is contained in:
7
.CondaPkg/env/Lib/selectors.py
vendored
7
.CondaPkg/env/Lib/selectors.py
vendored
@@ -509,6 +509,7 @@ if hasattr(select, 'kqueue'):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._selector = select.kqueue()
|
||||
self._max_events = 0
|
||||
|
||||
def fileno(self):
|
||||
return self._selector.fileno()
|
||||
@@ -520,10 +521,12 @@ if hasattr(select, 'kqueue'):
|
||||
kev = select.kevent(key.fd, select.KQ_FILTER_READ,
|
||||
select.KQ_EV_ADD)
|
||||
self._selector.control([kev], 0, 0)
|
||||
self._max_events += 1
|
||||
if events & EVENT_WRITE:
|
||||
kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,
|
||||
select.KQ_EV_ADD)
|
||||
self._selector.control([kev], 0, 0)
|
||||
self._max_events += 1
|
||||
except:
|
||||
super().unregister(fileobj)
|
||||
raise
|
||||
@@ -534,6 +537,7 @@ if hasattr(select, 'kqueue'):
|
||||
if key.events & EVENT_READ:
|
||||
kev = select.kevent(key.fd, select.KQ_FILTER_READ,
|
||||
select.KQ_EV_DELETE)
|
||||
self._max_events -= 1
|
||||
try:
|
||||
self._selector.control([kev], 0, 0)
|
||||
except OSError:
|
||||
@@ -543,6 +547,7 @@ if hasattr(select, 'kqueue'):
|
||||
if key.events & EVENT_WRITE:
|
||||
kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,
|
||||
select.KQ_EV_DELETE)
|
||||
self._max_events -= 1
|
||||
try:
|
||||
self._selector.control([kev], 0, 0)
|
||||
except OSError:
|
||||
@@ -555,7 +560,7 @@ if hasattr(select, 'kqueue'):
|
||||
# If max_ev is 0, kqueue will ignore the timeout. For consistent
|
||||
# behavior with the other selector classes, we prevent that here
|
||||
# (using max). See https://bugs.python.org/issue29255
|
||||
max_ev = max(len(self._fd_to_key), 1)
|
||||
max_ev = self._max_events or 1
|
||||
ready = []
|
||||
try:
|
||||
kev_list = self._selector.control(None, max_ev, timeout)
|
||||
|
||||
Reference in New Issue
Block a user