1 from manifold.util.singleton import Singleton
3 class ReactorWrapper(object):
4 __metaclass__ = Singleton
7 # Be sure the import is done only at runtime, we keep a reference in the
9 from twisted.internet import reactor
10 self.reactor = reactor
13 def callInReactor(self, callable, *args, **kw):
14 print "ReactorWrapper::callInReactor"
15 if self._reactorRunning:
16 self.reactor.callFromThread(callable, *args, **kw)
20 def isReactorRunning(self):
21 return self._reactorRunning
23 def start_reactor(self):
26 def stop_reactor(self):
29 def addReactorEventTrigger(self, phase, eventType, callable):
30 print "ReactorWrapper::addReactorEventTrigger"
31 if self._reactorRunning:
32 self.reactor.callFromThread(self.reactor.addSystemEventTrigger, phase, eventType, callable)
34 self.reactor.addSystemEventTrigger(phase, eventType, callable)
36 def __reactorShuttingDown(self):
39 def __reactorShutDown(self):
40 """This method called when the reactor is stopped"""
41 print "REACTOR SHUTDOWN"
42 self._reactorRunning = False
44 def __getattr__(self, name):
45 # We transfer missing methods to the reactor
46 def _missing(*args, **kwargs):
47 getattr(self.reactor, name)(*args, **kwargs)