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.fileno = fileno
self.cb = cb
def __call__(self, *args, **kw):
return self.cb(*args, **kw)
def __repr__(self):
return "%s(%r, %r, %r)" % (type(self).__name__, self.evtype, self.fileno, self.cb)
__str__ = __repr__
noop = FdListener(READ, 0, lambda x: None)
# in debug mode, track the call site that created the listener
class DebugListener(FdListener):
def __init__(self, evtype, fileno, cb):

View File

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

View File

@@ -5,15 +5,13 @@ 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
from eventlet.hubs.hub import BaseHub, READ, WRITE, noop
try:
BAD_SOCK = set((errno.EBADF, errno.WSAENOTSOCK))
except AttributeError:
BAD_SOCK = set((errno.EBADF,))
noop = lambda x: None
class Hub(BaseHub):
def _remove_bad_fds(self):
""" Iterate through fds, removing the ones that are bad per the
@@ -45,13 +43,13 @@ class Hub(BaseHub):
raise
for fileno in er:
readers.get(fileno, noop)(fileno)
writers.get(fileno, noop)(fileno)
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)(fileno)
listeners.get(fileno, noop).cb(fileno)
except self.SYSTEM_EXCEPTIONS:
raise
except: