fixed twistedhub not to use [renamed] support.greenlet module

This commit is contained in:
Denis Bilenko
2009-01-13 01:10:06 +06:00
parent 67021d4b70
commit f5654b311c

View File

@@ -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,14 +213,14 @@ 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()