X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=eventlet%2Feventlet%2Fhubs%2Fselects.py;fp=eventlet%2Feventlet%2Fhubs%2Fselects.py;h=0000000000000000000000000000000000000000;hb=358bd9258c2b6d2ee74de4dfd07a5123107abad4;hp=3f04e1a1067cf48153bee83e5e3104e44ca1cf3e;hpb=376ff3bfe7071cc0793184a378c4e74508fb0d97;p=packages%2Ftrusty%2Fpython-eventlet.git diff --git a/eventlet/eventlet/hubs/selects.py b/eventlet/eventlet/hubs/selects.py deleted file mode 100644 index 3f04e1a..0000000 --- a/eventlet/eventlet/hubs/selects.py +++ /dev/null @@ -1,60 +0,0 @@ -import errno -import sys -from eventlet import patcher -from eventlet.support import get_errno, clear_sys_exc_info -select = patcher.original('select') -time = patcher.original('time') - -from eventlet.hubs.hub import BaseHub, READ, WRITE, noop - -try: - BAD_SOCK = set((errno.EBADF, errno.WSAENOTSOCK)) -except AttributeError: - BAD_SOCK = set((errno.EBADF,)) - - -class Hub(BaseHub): - def _remove_bad_fds(self): - """ Iterate through fds, removing the ones that are bad per the - operating system. - """ - all_fds = list(self.listeners[READ]) + list(self.listeners[WRITE]) - for fd in all_fds: - try: - select.select([fd], [], [], 0) - except select.error as e: - if get_errno(e) in BAD_SOCK: - self.remove_descriptor(fd) - - def wait(self, seconds=None): - readers = self.listeners[READ] - writers = self.listeners[WRITE] - if not readers and not writers: - if seconds: - time.sleep(seconds) - return - all_fds = list(readers) + list(writers) - try: - r, w, er = select.select(readers.keys(), writers.keys(), all_fds, seconds) - except select.error as e: - if get_errno(e) == errno.EINTR: - return - elif get_errno(e) in BAD_SOCK: - self._remove_bad_fds() - return - else: - raise - - for fileno in er: - readers.get(fileno, noop).cb(fileno) - writers.get(fileno, noop).cb(fileno) - - for listeners, events in ((readers, r), (writers, w)): - for fileno in events: - try: - listeners.get(fileno, noop).cb(fileno) - except self.SYSTEM_EXCEPTIONS: - raise - except: - self.squelch_exception(fileno, sys.exc_info()) - clear_sys_exc_info()