summaryrefslogtreecommitdiffstats
path: root/deluge/ui/web/server.py
diff options
context:
space:
mode:
authorbendikro <bro.devel+deluge@gmail.com>2016-04-29 00:13:28 +0200
committerCalum Lind <calumlind+deluge@gmail.com>2016-05-08 12:00:44 +0100
commitbb0e699619dc5bf7d1d0202f30e1ba170c1f1d9d (patch)
tree4fde18fd8d2da66999cff595ec16b3022074ae32 /deluge/ui/web/server.py
parentd5294d5733a3433e806e43751d0fb880f1c557be (diff)
downloaddeluge-bb0e699619dc5bf7d1d0202f30e1ba170c1f1d9d.tar.gz
deluge-bb0e699619dc5bf7d1d0202f30e1ba170c1f1d9d.tar.bz2
deluge-bb0e699619dc5bf7d1d0202f30e1ba170c1f1d9d.zip
[UI] Add tests for ui_entry
Diffstat (limited to 'deluge/ui/web/server.py')
-rw-r--r--deluge/ui/web/server.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py
index 5ad2936f2..3b79bf093 100644
--- a/deluge/ui/web/server.py
+++ b/deluge/ui/web/server.py
@@ -532,8 +532,17 @@ class TopLevel(resource.Resource):
class DelugeWeb(component.Component):
- def __init__(self, options=None):
- super(DelugeWeb, self).__init__("DelugeWeb")
+ def __init__(self, options=None, daemon=True):
+ """
+ Setup the DelugeWeb server.
+
+ Args:
+ options (argparse.Namespace): The web server options.
+ daemon (bool): If True run web server as a seperate daemon process (starts a twisted
+ reactor). If False shares the process and twisted reactor from WebUI plugin or tests.
+
+ """
+ component.Component.__init__(self, "DelugeWeb", depend=["Web"])
self.config = configmanager.ConfigManager("web.conf", CONFIG_DEFAULTS)
self.config.run_converter((0, 1), 2, self._migrate_config_1_to_2)
self.config.register_set_function("language", self._on_language_changed)
@@ -567,7 +576,7 @@ class DelugeWeb(component.Component):
self.web_utils = WebUtils()
self.auth = Auth(self.config)
- self.standalone = True
+ self.daemon = daemon
# Initalize the plugins
self.plugins = PluginManager()
@@ -594,22 +603,14 @@ class DelugeWeb(component.Component):
return 1
SetConsoleCtrlHandler(win_handler)
- def start(self, standalone=True):
+ def start(self):
"""
Start the DelugeWeb server
-
- When running WebUI plugin, the server must not try to start
- the twisted reactor.
-
- Args:
- standalone (bool): Whether the server runs as a standalone process
- If standalone, start twisted reactor.
"""
if self.socket:
log.warn("DelugeWeb is already running and cannot be started")
return
- self.standalone = standalone
log.info("Starting webui server at PID %s", os.getpid())
if self.https:
self.start_ssl()
@@ -618,7 +619,7 @@ class DelugeWeb(component.Component):
component.get("Web").enable()
- if self.standalone:
+ if self.daemon:
reactor.run()
def start_normal(self):
@@ -641,7 +642,10 @@ class DelugeWeb(component.Component):
def stop(self):
log.info("Shutting down webserver")
- component.get("Web").disable()
+ try:
+ component.get("Web").disable()
+ except KeyError:
+ pass
self.plugins.disable_plugins()
log.debug("Saving configuration file")
@@ -657,7 +661,7 @@ class DelugeWeb(component.Component):
def shutdown(self, *args):
self.stop()
- if self.standalone and reactor.running:
+ if self.daemon and reactor.running:
reactor.stop()
def _migrate_config_1_to_2(self, config):