Removed redundant switch impl in pyevent hub. Added more exc_clears where needed. Slightly optimized switch a bit.

This commit is contained in:
Ryan Williams
2010-02-24 22:19:57 -05:00
parent ee71f87f74
commit b2f58bdf97
4 changed files with 4 additions and 20 deletions

View File

@@ -106,9 +106,8 @@ class BaseHub(object):
if self.greenlet.dead:
self.greenlet = greenlet.greenlet(self.run)
try:
current = greenlet.getcurrent()
if self.greenlet.parent is not current:
current.parent = self.greenlet
if self.greenlet.parent is not cur:
cur.parent = self.greenlet
except ValueError:
pass # gets raised if there is a greenlet parent cycle
sys.exc_clear()

View File

@@ -108,3 +108,4 @@ class Hub(BaseHub):
raise
except:
self.squelch_exception(fileno, sys.exc_info())
sys.exc_clear()

View File

@@ -45,23 +45,6 @@ class Hub(BaseHub):
self.signal_exc_info = None
self.signal(2, lambda signalnum, frame: self.greenlet.parent.throw(KeyboardInterrupt))
self.events_to_add = []
def switch(self):
cur = greenlet.getcurrent()
assert cur is not self.greenlet, 'Cannot switch to MAINLOOP from MAINLOOP'
switch_out = getattr(cur, 'switch_out', None)
if switch_out is not None:
try:
switch_out()
except:
traceback.print_exception(*sys.exc_info())
if self.greenlet.dead:
self.greenlet = greenlet.greenlet(self.run)
try:
greenlet.getcurrent().parent = self.greenlet
except ValueError:
pass
return self.greenlet.switch()
def dispatch(self):
loop = event.loop

View File

@@ -57,3 +57,4 @@ class Hub(BaseHub):
raise
except:
self.squelch_exception(fileno, sys.exc_info())
sys.exc_clear()