From 9677585e2ac1529be7cb3d417545bbf5ba634201 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Mon, 5 Oct 2015 23:00:17 +0200 Subject: implement signal-handler, connect audio-selector to it --- voctogui/lib/connection.py | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) (limited to 'voctogui/lib/connection.py') diff --git a/voctogui/lib/connection.py b/voctogui/lib/connection.py index b56a490..42a403e 100644 --- a/voctogui/lib/connection.py +++ b/voctogui/lib/connection.py @@ -10,6 +10,7 @@ log = logging.getLogger('Connection') conn = None port = 9999 command_queue = Queue() +signal_handlers = {} def establish(host): global conn, port, log @@ -101,15 +102,36 @@ def on_loop(): args = words[1:] log.info('received signal %s, dispatching', signal) + if signal not in signal_handlers: + return True + + for handler in signal_handlers[signal]: + cb = handler['cb'] + if 'one' in handler and handler['one']: + log.debug('removing one-time handler') + del signal_handlers[signal] + + cb(*args) + + return True -def send(command): +def send(command, *args): global conn, log - if isinstance(command, str): - command = command.encode('ascii') - conn.send(command) + if len(args) > 0: + command += ' '+(' '.join(args)) + + command += '\n' + + conn.send(command.encode('ascii')) def on(signal, cb): - pass + if signal not in signal_handlers: + signal_handlers[signal] = [] + + signal_handlers[signal].append({'cb': cb}) def one(signal, cb): - pass + if signal not in signal_handlers: + signal_handlers[signal] = [] + + signal_handlers[signal].append({'cb': cb, 'one': True}) -- cgit v1.2.3