-
Notifications
You must be signed in to change notification settings - Fork 26
/
twisted_application.py
59 lines (39 loc) · 1.67 KB
/
twisted_application.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# (C) Copyright 2007-2019 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only
# under the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
# Thanks for using Enthought open source!
""" A non-GUI application with a twisted reactor event loop.
Nothing is imported from twisted until the application is started so this
module can safely live in the Envisage core without twisted being installed.
"""
# Standard library imports.
import logging
# Enthought library imports.
from envisage.api import Application
# Logging.
logger = logging.getLogger(__name__)
class TwistedApplication(Application):
""" A non-GUI application with a twisted reactor event loop. """
def start(self):
""" Start the application. """
started = super(TwistedApplication, self).start()
# Don't start the event loop if the start was vetoed.
if started:
from twisted.internet import reactor
logger.debug('---------- reactor starting ----------')
reactor.run()
return started
def stop(self):
""" Stop the application. """
stopped = super(TwistedApplication, self).stop()
# Don't stop the event loop if the stop was vetoed.
if stopped:
from twisted.internet import reactor
logger.debug('---------- reactor stopping ----------')
reactor.stop()
return stopped
#### EOF ######################################################################