Fixed some exc-related issues, some others remain.
This commit is contained in:
@@ -32,8 +32,9 @@ def check_hub():
|
||||
api.sleep(0)
|
||||
api.sleep(0)
|
||||
hub = api.get_hub()
|
||||
for dct in hub.readers, hub.writers, hub.excs:
|
||||
assert not dct, repr(dct)
|
||||
for nm in 'readers', 'writers', 'excs':
|
||||
dct = getattr(hub, nm)
|
||||
assert not dct, "hub.%s not empty: %s" % (nm, dct)
|
||||
# Stop the runloop
|
||||
api.get_hub().abort()
|
||||
api.sleep(0)
|
||||
@@ -74,12 +75,11 @@ class TestApi(tests.TestCase):
|
||||
check_hub()
|
||||
|
||||
def test_server(self):
|
||||
connected = []
|
||||
server = api.tcp_listener(('0.0.0.0', 0))
|
||||
bound_port = server.getsockname()[1]
|
||||
connected = []
|
||||
|
||||
def accept_twice((conn, addr)):
|
||||
print 'connected'
|
||||
connected.append(True)
|
||||
conn.close()
|
||||
if len(connected) == 2:
|
||||
|
||||
@@ -34,6 +34,9 @@ from eventlet import hub
|
||||
|
||||
import greenlet
|
||||
|
||||
# XXX for debugging only
|
||||
#raise ImportError()
|
||||
|
||||
try:
|
||||
# use rel if it's available
|
||||
import rel
|
||||
@@ -68,20 +71,16 @@ class Hub(hub.BaseHub):
|
||||
evt = event.write(fileno, write, fileno)
|
||||
evt.add()
|
||||
self.writers[fileno] = evt, write
|
||||
|
||||
if exc:
|
||||
self.excs[fileno] = exc
|
||||
|
||||
def remove_descriptor(self, fileno):
|
||||
for queue in (self.readers, self.writers):
|
||||
tpl = queue.pop(fileno, None)
|
||||
if tpl is not None:
|
||||
tpl[0].delete()
|
||||
|
||||
def exc_descriptor(self, fileno):
|
||||
for queue in (self.readers, self.writers):
|
||||
tpl = queue.pop(fileno, None)
|
||||
if tpl is not None:
|
||||
evt, cb = tpl
|
||||
evt.delete()
|
||||
cb(fileno)
|
||||
self.excs.pop(fileno, None)
|
||||
|
||||
def signal_received(self, signal):
|
||||
self.interrupted = True
|
||||
|
||||
Reference in New Issue
Block a user