diff options
author | Sebastian Reichel <sre@ring0.de> | 2013-03-27 00:06:53 +0100 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2013-03-27 00:06:53 +0100 |
commit | d6bdcc8895e38e8b4a61dd6e550103bce44e71b3 (patch) | |
tree | 9354480352fd5db323edb10f2595d3e28c6fa108 /src/scanner-session | |
parent | 52ea2214a6bb2b6e07def04cffd1bc2553d64077 (diff) | |
download | serial-barcode-scanner-d6bdcc8895e38e8b4a61dd6e550103bce44e71b3.tar.bz2 |
handle errors
Diffstat (limited to 'src/scanner-session')
-rw-r--r-- | src/scanner-session/scannersession.vala | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/scanner-session/scannersession.vala b/src/scanner-session/scannersession.vala index 6926ba9..5d87cc8 100644 --- a/src/scanner-session/scannersession.vala +++ b/src/scanner-session/scannersession.vala @@ -23,13 +23,17 @@ public class ScannerSessionImplementation { private Database db; private AudioPlayer audio; + private SerialDevice dev; public signal void msg(MessageType type, string message); public ScannerSessionImplementation() { try { db = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.Database", "/io/mainframe/shopsystem/database"); + dev = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.SerialDevice", "/io/mainframe/shopsystem/device"); audio = Bus.get_proxy_sync(BusType.SESSION, "io.mainframe.shopsystem.AudioPlayer", "/io/mainframe/shopsystem/audio"); + + dev.received_barcode.connect(handle_barcode); } catch(IOError e) { error("IOError: %s\n", e.message); } @@ -46,7 +50,7 @@ public class ScannerSessionImplementation { logged_in = false; } - private bool login(int user) { + private bool login(int user) throws IOError { this.user = user; try { this.name = db.get_username(user); @@ -60,7 +64,18 @@ public class ScannerSessionImplementation { return true; } - private bool interpret(string scannerdata) { + private void handle_barcode(string scannerdata) { + try { + if(interpret(scannerdata)) + dev.blink(1000); + } catch(IOError e) { + send_message(MessageType.ERROR, "IOError: %s", e.message); + } catch(DatabaseError e) { + send_message(MessageType.ERROR, "DatabaseError: %s", e.message); + } + } + + private bool interpret(string scannerdata) throws DatabaseError, IOError { if(scannerdata.has_prefix("USER ")) { string str_id = scannerdata.substring(5); int32 id = int.parse(str_id); |