Merged in nginx stuff cause I guess there was a conflict.
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:
|
||||
|
@@ -33,7 +33,7 @@ import greenlet
|
||||
from eventlet import greenlib
|
||||
from eventlet.timer import Timer
|
||||
|
||||
class Hub(object):
|
||||
class BaseHub(object):
|
||||
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
||||
|
||||
def __init__(self, clock=time.time):
|
||||
|
@@ -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
|
||||
@@ -45,7 +48,7 @@ except ImportError:
|
||||
import event
|
||||
|
||||
|
||||
class Hub(hub.Hub):
|
||||
class Hub(hub.BaseHub):
|
||||
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
||||
|
||||
def __init__(self, clock=time.time):
|
||||
@@ -68,36 +71,33 @@ class Hub(hub.Hub):
|
||||
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
|
||||
|
||||
def wait(self, seconds=None):
|
||||
if self.interrupted:
|
||||
raise KeyboardInterrupt()
|
||||
|
||||
timer = event.timeout(seconds, lambda: None)
|
||||
timer.add()
|
||||
|
||||
status = event.loop()
|
||||
if status == -1:
|
||||
raise RuntimeError("does this ever happen?")
|
||||
|
||||
|
||||
timer.delete()
|
||||
|
||||
if self.interrupted:
|
||||
self.interrupted = False
|
||||
raise KeyboardInterrupt()
|
||||
|
||||
def add_timer(self, timer):
|
||||
event.timeout(timer.seconds, timer).add()
|
||||
|
@@ -37,7 +37,7 @@ EXC_MASK = select.POLLERR | select.POLLHUP | select.POLLNVAL
|
||||
READ_MASK = select.POLLIN
|
||||
WRITE_MASK = select.POLLOUT
|
||||
|
||||
class Hub(hub.Hub):
|
||||
class Hub(hub.BaseHub):
|
||||
def __init__(self, clock=time.time):
|
||||
super(Hub, self).__init__(clock)
|
||||
self.poll = select.poll()
|
||||
|
@@ -31,7 +31,7 @@ from eventlet import hub
|
||||
|
||||
import greenlet
|
||||
|
||||
class Hub(hub.Hub):
|
||||
class Hub(hub.BaseHub):
|
||||
def wait(self, seconds=None):
|
||||
readers = self.readers
|
||||
writers = self.writers
|
||||
|
Reference in New Issue
Block a user