Removed unnecessary __call__ from the hub, now everything hits cb directly.

This commit is contained in:
Ryan Williams
2010-03-14 21:08:48 -07:00
parent 483f7ae8ab
commit 985f8ca0ac
3 changed files with 13 additions and 21 deletions

View File

@@ -16,13 +16,13 @@ class FdListener(object):
self.evtype = evtype self.evtype = evtype
self.fileno = fileno self.fileno = fileno
self.cb = cb self.cb = cb
def __call__(self, *args, **kw):
return self.cb(*args, **kw)
def __repr__(self): def __repr__(self):
return "%s(%r, %r, %r)" % (type(self).__name__, self.evtype, self.fileno, self.cb) return "%s(%r, %r, %r)" % (type(self).__name__, self.evtype, self.fileno, self.cb)
__str__ = __repr__ __str__ = __repr__
noop = FdListener(READ, 0, lambda x: None)
# in debug mode, track the call site that created the listener # in debug mode, track the call site that created the listener
class DebugListener(FdListener): class DebugListener(FdListener):
def __init__(self, evtype, fileno, cb): def __init__(self, evtype, fileno, cb):

View File

@@ -6,14 +6,12 @@ time = patcher.original('time')
sleep = time.sleep sleep = time.sleep
from eventlet.support import get_errno, clear_sys_exc_info from eventlet.support import get_errno, clear_sys_exc_info
from eventlet.hubs.hub import BaseHub, READ, WRITE from eventlet.hubs.hub import BaseHub, READ, WRITE, noop
EXC_MASK = select.POLLERR | select.POLLHUP EXC_MASK = select.POLLERR | select.POLLHUP
READ_MASK = select.POLLIN | select.POLLPRI READ_MASK = select.POLLIN | select.POLLPRI
WRITE_MASK = select.POLLOUT WRITE_MASK = select.POLLOUT
noop = lambda x: None
class Hub(BaseHub): class Hub(BaseHub):
WAIT_MULTIPLIER=1000.0 # poll.poll's timeout is measured in milliseconds WAIT_MULTIPLIER=1000.0 # poll.poll's timeout is measured in milliseconds
@@ -52,9 +50,7 @@ class Hub(BaseHub):
else: else:
try: try:
self.poll.unregister(fileno) self.poll.unregister(fileno)
except KeyError: except (KeyError, IOError, OSError):
pass
except (IOError, OSError):
# raised if we try to remove a fileno that was # raised if we try to remove a fileno that was
# already removed/invalid # already removed/invalid
pass pass
@@ -63,9 +59,7 @@ class Hub(BaseHub):
super(Hub, self).remove_descriptor(fileno) super(Hub, self).remove_descriptor(fileno)
try: try:
self.poll.unregister(fileno) self.poll.unregister(fileno)
except (KeyError, ValueError): except (KeyError, ValueError, IOError, OSError):
pass
except (IOError, OSError):
# raised if we try to remove a fileno that was # raised if we try to remove a fileno that was
# already removed/invalid # already removed/invalid
pass pass
@@ -89,15 +83,15 @@ class Hub(BaseHub):
for fileno, event in presult: for fileno, event in presult:
try: try:
if event & READ_MASK: if event & READ_MASK:
readers.get(fileno, noop)(fileno) readers.get(fileno, noop).cb(fileno)
if event & WRITE_MASK: if event & WRITE_MASK:
writers.get(fileno, noop)(fileno) writers.get(fileno, noop).cb(fileno)
if event & select.POLLNVAL: if event & select.POLLNVAL:
self.remove_descriptor(fileno) self.remove_descriptor(fileno)
continue continue
if event & EXC_MASK: if event & EXC_MASK:
readers.get(fileno, noop)(fileno) readers.get(fileno, noop).cb(fileno)
writers.get(fileno, noop)(fileno) writers.get(fileno, noop).cb(fileno)
except SYSTEM_EXCEPTIONS: except SYSTEM_EXCEPTIONS:
raise raise
except: except:

View File

@@ -5,15 +5,13 @@ from eventlet.support import get_errno, clear_sys_exc_info
select = patcher.original('select') select = patcher.original('select')
time = patcher.original('time') time = patcher.original('time')
from eventlet.hubs.hub import BaseHub, READ, WRITE from eventlet.hubs.hub import BaseHub, READ, WRITE, noop
try: try:
BAD_SOCK = set((errno.EBADF, errno.WSAENOTSOCK)) BAD_SOCK = set((errno.EBADF, errno.WSAENOTSOCK))
except AttributeError: except AttributeError:
BAD_SOCK = set((errno.EBADF,)) BAD_SOCK = set((errno.EBADF,))
noop = lambda x: None
class Hub(BaseHub): class Hub(BaseHub):
def _remove_bad_fds(self): def _remove_bad_fds(self):
""" Iterate through fds, removing the ones that are bad per the """ Iterate through fds, removing the ones that are bad per the
@@ -45,13 +43,13 @@ class Hub(BaseHub):
raise raise
for fileno in er: for fileno in er:
readers.get(fileno, noop)(fileno) readers.get(fileno, noop).cb(fileno)
writers.get(fileno, noop)(fileno) writers.get(fileno, noop).cb(fileno)
for listeners, events in ((readers, r), (writers, w)): for listeners, events in ((readers, r), (writers, w)):
for fileno in events: for fileno in events:
try: try:
listeners.get(fileno, noop)(fileno) listeners.get(fileno, noop).cb(fileno)
except self.SYSTEM_EXCEPTIONS: except self.SYSTEM_EXCEPTIONS:
raise raise
except: except: