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)
|
||||||
api.sleep(0)
|
api.sleep(0)
|
||||||
hub = api.get_hub()
|
hub = api.get_hub()
|
||||||
for dct in hub.readers, hub.writers, hub.excs:
|
for nm in 'readers', 'writers', 'excs':
|
||||||
assert not dct, repr(dct)
|
dct = getattr(hub, nm)
|
||||||
|
assert not dct, "hub.%s not empty: %s" % (nm, dct)
|
||||||
# Stop the runloop
|
# Stop the runloop
|
||||||
api.get_hub().abort()
|
api.get_hub().abort()
|
||||||
api.sleep(0)
|
api.sleep(0)
|
||||||
@@ -74,12 +75,11 @@ class TestApi(tests.TestCase):
|
|||||||
check_hub()
|
check_hub()
|
||||||
|
|
||||||
def test_server(self):
|
def test_server(self):
|
||||||
|
connected = []
|
||||||
server = api.tcp_listener(('0.0.0.0', 0))
|
server = api.tcp_listener(('0.0.0.0', 0))
|
||||||
bound_port = server.getsockname()[1]
|
bound_port = server.getsockname()[1]
|
||||||
connected = []
|
|
||||||
|
|
||||||
def accept_twice((conn, addr)):
|
def accept_twice((conn, addr)):
|
||||||
print 'connected'
|
|
||||||
connected.append(True)
|
connected.append(True)
|
||||||
conn.close()
|
conn.close()
|
||||||
if len(connected) == 2:
|
if len(connected) == 2:
|
||||||
|
@@ -33,7 +33,7 @@ import greenlet
|
|||||||
from eventlet import greenlib
|
from eventlet import greenlib
|
||||||
from eventlet.timer import Timer
|
from eventlet.timer import Timer
|
||||||
|
|
||||||
class Hub(object):
|
class BaseHub(object):
|
||||||
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
||||||
|
|
||||||
def __init__(self, clock=time.time):
|
def __init__(self, clock=time.time):
|
||||||
|
@@ -34,6 +34,9 @@ from eventlet import hub
|
|||||||
|
|
||||||
import greenlet
|
import greenlet
|
||||||
|
|
||||||
|
# XXX for debugging only
|
||||||
|
#raise ImportError()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# use rel if it's available
|
# use rel if it's available
|
||||||
import rel
|
import rel
|
||||||
@@ -45,7 +48,7 @@ except ImportError:
|
|||||||
import event
|
import event
|
||||||
|
|
||||||
|
|
||||||
class Hub(hub.Hub):
|
class Hub(hub.BaseHub):
|
||||||
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
||||||
|
|
||||||
def __init__(self, clock=time.time):
|
def __init__(self, clock=time.time):
|
||||||
@@ -69,27 +72,20 @@ class Hub(hub.Hub):
|
|||||||
evt.add()
|
evt.add()
|
||||||
self.writers[fileno] = evt, write
|
self.writers[fileno] = evt, write
|
||||||
|
|
||||||
|
if exc:
|
||||||
|
self.excs[fileno] = exc
|
||||||
|
|
||||||
def remove_descriptor(self, fileno):
|
def remove_descriptor(self, fileno):
|
||||||
for queue in (self.readers, self.writers):
|
for queue in (self.readers, self.writers):
|
||||||
tpl = queue.pop(fileno, None)
|
tpl = queue.pop(fileno, None)
|
||||||
if tpl is not None:
|
if tpl is not None:
|
||||||
tpl[0].delete()
|
tpl[0].delete()
|
||||||
|
self.excs.pop(fileno, None)
|
||||||
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)
|
|
||||||
|
|
||||||
def signal_received(self, signal):
|
def signal_received(self, signal):
|
||||||
self.interrupted = True
|
self.interrupted = True
|
||||||
|
|
||||||
def wait(self, seconds=None):
|
def wait(self, seconds=None):
|
||||||
if self.interrupted:
|
|
||||||
raise KeyboardInterrupt()
|
|
||||||
|
|
||||||
timer = event.timeout(seconds, lambda: None)
|
timer = event.timeout(seconds, lambda: None)
|
||||||
timer.add()
|
timer.add()
|
||||||
|
|
||||||
@@ -99,6 +95,10 @@ class Hub(hub.Hub):
|
|||||||
|
|
||||||
timer.delete()
|
timer.delete()
|
||||||
|
|
||||||
|
if self.interrupted:
|
||||||
|
self.interrupted = False
|
||||||
|
raise KeyboardInterrupt()
|
||||||
|
|
||||||
def add_timer(self, timer):
|
def add_timer(self, timer):
|
||||||
event.timeout(timer.seconds, timer).add()
|
event.timeout(timer.seconds, timer).add()
|
||||||
|
|
||||||
|
@@ -37,7 +37,7 @@ EXC_MASK = select.POLLERR | select.POLLHUP | select.POLLNVAL
|
|||||||
READ_MASK = select.POLLIN
|
READ_MASK = select.POLLIN
|
||||||
WRITE_MASK = select.POLLOUT
|
WRITE_MASK = select.POLLOUT
|
||||||
|
|
||||||
class Hub(hub.Hub):
|
class Hub(hub.BaseHub):
|
||||||
def __init__(self, clock=time.time):
|
def __init__(self, clock=time.time):
|
||||||
super(Hub, self).__init__(clock)
|
super(Hub, self).__init__(clock)
|
||||||
self.poll = select.poll()
|
self.poll = select.poll()
|
||||||
|
@@ -31,7 +31,7 @@ from eventlet import hub
|
|||||||
|
|
||||||
import greenlet
|
import greenlet
|
||||||
|
|
||||||
class Hub(hub.Hub):
|
class Hub(hub.BaseHub):
|
||||||
def wait(self, seconds=None):
|
def wait(self, seconds=None):
|
||||||
readers = self.readers
|
readers = self.readers
|
||||||
writers = self.writers
|
writers = self.writers
|
||||||
|
Reference in New Issue
Block a user