1
2
3
4 """
5 A helper class for Twisted commands.
6 """
7
8 from twisted.internet import defer
9
10 import command
11
12
14
16 """
17 Override me to install your own reactor.
18 """
19 from twisted.internet import reactor
20 self.reactor = reactor
21
23 self.installReactor()
24
25 def later():
26 try:
27 d = defer.maybeDeferred(self.doLater, args)
28 except Exception:
29 self.reactor.stop()
30 raise
31
32 d.addCallback(lambda _: self.reactor.stop())
33 def eb(failure):
34 self.stderr.write('Failure: %s\n' % failure.getErrorMessage())
35
36 self.reactor.stop()
37 d.addErrback(eb)
38
39 self.reactor.callLater(0, later)
40
41 self.reactor.run()
42
44 raise NotImplementedError
45