diff options
author | MaZderMind <git@mazdermind.de> | 2015-09-02 15:08:49 +0200 |
---|---|---|
committer | MaZderMind <git@mazdermind.de> | 2015-09-02 15:08:49 +0200 |
commit | c61fe2b667079168387376da1c09823967476b21 (patch) | |
tree | 4e281f520c228b0525df403706903962d6c84da9 /voctocore/lib/controlserver.py | |
parent | 46aace37db5c035a6d6b432db261dc7c417456f4 (diff) |
refactor commands and notify code
Diffstat (limited to 'voctocore/lib/controlserver.py')
-rw-r--r-- | voctocore/lib/controlserver.py | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/voctocore/lib/controlserver.py b/voctocore/lib/controlserver.py index 4e95e46..e0632fc 100644 --- a/voctocore/lib/controlserver.py +++ b/voctocore/lib/controlserver.py @@ -5,6 +5,7 @@ from gi.repository import GObject from lib.commands import ControlServerCommands from lib.tcpmulticonnection import TCPMultiConnection +from lib.response import NotifyResponse, OkResponse class ControlServer(TCPMultiConnection): def __init__(self, pipeline): @@ -73,21 +74,29 @@ class ControlServer(TCPMultiConnection): args = words[1:] try: - f = self.commands.fetch(command) - message, send_signals = f(*args) - response = "ok %s\n" % message + command_function = self.commands.__class__.__dict__[command] - except Exception as e: - message = str(e) or "<no message>" - response = "error %s\n" % message + except KeyError as e: + response = "error unknown command %s\n" % command else: - if send_signals: - signal = "signal %s\n" % line - for conn, queue in self.currentConnections.items(): - if conn == requestor: - continue - queue.put(signal) + try: + responseObject = command_function(self.commands, *args) + + except Exception as e: + message = str(e) or "<no message>" + response = "error %s\n" % message + + else: + if isinstance(responseObject, NotifyResponse): + signal = "%s\n" % str(responseObject) + for conn, queue in self.currentConnections.items(): + if conn == requestor: + continue + + queue.put(signal) + + response = "%s\n" % str(responseObject) finally: self.currentConnections[requestor].put(response) |