Removed redundant switch impl in pyevent hub. Added more exc_clears where needed. Slightly optimized switch a bit.
This commit is contained in:
@@ -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()
|
||||
|
@@ -108,3 +108,4 @@ class Hub(BaseHub):
|
||||
raise
|
||||
except:
|
||||
self.squelch_exception(fileno, sys.exc_info())
|
||||
sys.exc_clear()
|
||||
|
@@ -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
|
||||
|
@@ -57,3 +57,4 @@ class Hub(BaseHub):
|
||||
raise
|
||||
except:
|
||||
self.squelch_exception(fileno, sys.exc_info())
|
||||
sys.exc_clear()
|
Reference in New Issue
Block a user