Merged in nginx stuff cause I guess there was a conflict.

This commit is contained in:
rdw
2008-03-18 12:31:40 -05:00
5 changed files with 20 additions and 20 deletions

View File

@@ -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:

View File

@@ -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):

View File

@@ -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()

View File

@@ -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()

View File

@@ -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