diff options
Diffstat (limited to 'src/main.vala')
-rw-r--r-- | src/main.vala | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/src/main.vala b/src/main.vala deleted file mode 100644 index 67f00ff..0000000 --- a/src/main.vala +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright 2012, Sebastian Reichel <sre@ring0.de> - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -public Device dev; -public Database db; -public AudioPlayer audio; -public CSVMemberFile csvimport; -public ScannerSession localsession; -public MainLoop loop; -public PGPKeyArchive pgp; -public KeyFile cfg; -public CursesUI ui; - -const OptionEntry[] option_entries = { - { "version", 'v', OptionFlags.IN_MAIN, OptionArg.NONE, ref opt_version, "output version information and exit", null }, - {null} -}; - -/* parameters */ -static bool opt_version; - -public static int main(string[] args) { - /* parse parameters from shell */ - var context = new OptionContext("- KtT Shop System"); - context.set_help_enabled(true); - context.add_main_entries(option_entries, "shop"); - context.add_group(Gst.init_get_option_group()); - - try { - context.parse(ref args); - } catch(OptionError e) { - stderr.puts(e.message + "\n"); - return 1; - } - - if(opt_version) { - stdout.puts("KtT Shop System 0.1\n"); - return 0; - } - - /* handle unix signals */ - Unix.signal_add(Posix.SIGTERM, handle_signals); - Unix.signal_add(Posix.SIGINT, handle_signals); - - try { - cfg = new KeyFile(); - cfg.load_from_file("ktt-shopsystem.cfg", KeyFileFlags.NONE); - } catch(Error e) { - error("Could not load configuration file: %s", e.message); - } - - string devicefile = ""; - try { - devicefile = cfg.get_string("SERIAL", "device"); - } catch(KeyFileError e) { - stderr.puts("Please specify serial device in the configuration file!\n"); - return 1; - } - - dev = new Device(devicefile, 9600, 8, 1); - db = new Database("shop.db"); - audio = new AudioPlayer(); - loop = new MainLoop(); - localsession = new ScannerSession(); - - pgp = new PGPKeyArchive(cfg); - - dev.received_barcode.connect((data) => { - if(localsession.interpret(data)) - dev.blink(10); - }); - - ui = new CursesUI(); - - while(!check_valid_time()) { - write_to_log("Invalid System Time! Retry in 1 minute..."); - Posix.sleep(60); - } - - write_to_log("KtT Shop System has been started"); - audio.play_system("startup.ogg"); - - /* attach webserver to mainloop */ - new WebServer(); - - /* run mainloop */ - loop.run(); - - write_to_log("Stopping Shop System"); - audio.play_system("shutdown.ogg"); - - /* we need to run the mainloop to play audio */ - audio.end_of_stream.connect(() => { loop.quit(); }); - loop.run(); - - /* explicitly call destructors */ - dev = null; - db = null; - audio = null; - ui.exit(); - - return 0; -} - -public bool check_valid_time() { - return time_t() > db.get_timestamp_of_last_purchase(); -} - -public void write_to_log(string format, ...) { - var arguments = va_list(); - var message = format.vprintf(arguments); - - ui.log(message); -} - -bool handle_signals() { - loop.quit(); - return false; -} |