fixed twistedhub not to use [renamed] support.greenlet module
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
from twisted.internet.base import DelayedCall as TwistedDelayedCall
|
from twisted.internet.base import DelayedCall as TwistedDelayedCall
|
||||||
from eventlet.support.greenlet import greenlet
|
from eventlet import api
|
||||||
|
|
||||||
|
|
||||||
class DelayedCall(TwistedDelayedCall):
|
class DelayedCall(TwistedDelayedCall):
|
||||||
@@ -37,7 +37,7 @@ class DelayedCall(TwistedDelayedCall):
|
|||||||
class LocalDelayedCall(DelayedCall):
|
class LocalDelayedCall(DelayedCall):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.greenlet = greenlet.getcurrent()
|
self.greenlet = api.getcurrent()
|
||||||
DelayedCall.__init__(self, *args, **kwargs)
|
DelayedCall.__init__(self, *args, **kwargs)
|
||||||
|
|
||||||
def _get_cancelled(self):
|
def _get_cancelled(self):
|
||||||
@@ -109,9 +109,9 @@ class BaseTwistedHub(object):
|
|||||||
self.waiters_by_greenlet = {}
|
self.waiters_by_greenlet = {}
|
||||||
|
|
||||||
def switch(self):
|
def switch(self):
|
||||||
assert greenlet.getcurrent() is not self.greenlet, 'Impossible to switch() from the mainloop greenlet'
|
assert api.getcurrent() is not self.greenlet, 'Impossible to switch() from the mainloop greenlet'
|
||||||
try:
|
try:
|
||||||
greenlet.getcurrent().parent = self.greenlet
|
api.getcurrent().parent = self.greenlet
|
||||||
except ValueError, ex:
|
except ValueError, ex:
|
||||||
pass
|
pass
|
||||||
return self.greenlet.switch()
|
return self.greenlet.switch()
|
||||||
@@ -128,14 +128,14 @@ class BaseTwistedHub(object):
|
|||||||
if write:
|
if write:
|
||||||
reactor.addWriter(descriptor)
|
reactor.addWriter(descriptor)
|
||||||
# XXX exc will not work if no read nor write
|
# XXX exc will not work if no read nor write
|
||||||
self.waiters_by_greenlet[greenlet.getcurrent()] = descriptor
|
self.waiters_by_greenlet[api.getcurrent()] = descriptor
|
||||||
return descriptor
|
return descriptor
|
||||||
|
|
||||||
def remove_descriptor(self, descriptor):
|
def remove_descriptor(self, descriptor):
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
reactor.removeReader(descriptor)
|
reactor.removeReader(descriptor)
|
||||||
reactor.removeWriter(descriptor)
|
reactor.removeWriter(descriptor)
|
||||||
self.waiters_by_greenlet.pop(greenlet.getcurrent(), None)
|
self.waiters_by_greenlet.pop(api.getcurrent(), None)
|
||||||
|
|
||||||
def exc_greenlet(self, gr, *throw_args):
|
def exc_greenlet(self, gr, *throw_args):
|
||||||
fileno = self.waiters_by_greenlet.pop(gr, None)
|
fileno = self.waiters_by_greenlet.pop(gr, None)
|
||||||
@@ -213,16 +213,16 @@ class TwistedHub(BaseTwistedHub):
|
|||||||
assert Hub.state==0, ('%s hub can only be instantiated once' % type(self).__name__, Hub.state)
|
assert Hub.state==0, ('%s hub can only be instantiated once' % type(self).__name__, Hub.state)
|
||||||
Hub.state = 1
|
Hub.state = 1
|
||||||
make_twisted_threadpool_daemonic() # otherwise the program would hang after the main greenlet exited
|
make_twisted_threadpool_daemonic() # otherwise the program would hang after the main greenlet exited
|
||||||
g = greenlet(self.run)
|
g = api.Greenlet(self.run)
|
||||||
BaseTwistedHub.__init__(self, g)
|
BaseTwistedHub.__init__(self, g)
|
||||||
|
|
||||||
def switch(self):
|
def switch(self):
|
||||||
if self.greenlet.dead:
|
if self.greenlet.dead:
|
||||||
self.greenlet = greenlet(self.run)
|
self.greenlet = api.Greenlet(self.run)
|
||||||
try:
|
try:
|
||||||
greenlet.getcurrent().parent = self.greenlet
|
api.getcurrent().parent = self.greenlet
|
||||||
except ValueError, ex:
|
except ValueError, ex:
|
||||||
pass
|
pass
|
||||||
return self.greenlet.switch()
|
return self.greenlet.switch()
|
||||||
|
|
||||||
def run(self, installSignalHandlers=None):
|
def run(self, installSignalHandlers=None):
|
||||||
|
Reference in New Issue
Block a user