diff options
author | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-11 20:47:03 +0200 |
---|---|---|
committer | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-12 19:31:23 +0200 |
commit | 9d61f22844bdfcbe983976aaf5176d08e741a6de (patch) | |
tree | 8cb3f04507eda40c902337ee40dfc8c044007781 /src/cli/main.vala | |
parent | 609f72b68df7d8c5a029d5faf1867ef68a5ff6ef (diff) | |
download | serial-barcode-scanner-9d61f22844bdfcbe983976aaf5176d08e741a6de.tar.bz2 |
a simple cli interface to send barcodes
Diffstat (limited to 'src/cli/main.vala')
-rw-r--r-- | src/cli/main.vala | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/cli/main.vala b/src/cli/main.vala new file mode 100644 index 0000000..a85cbc7 --- /dev/null +++ b/src/cli/main.vala @@ -0,0 +1,65 @@ +/* Copyright 2015, Holger Cremer <HolgerCremer@gmail.com> + * + * 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. + */ + +CliImpl cli; +MainLoop ml; +string[] commands; + +public static int main(string[] args) { + if (args.length == 1) { + stdout.printf("Nothing to send.\nUsage: %s <commnds to send...>\nExample: %s \"USER 1\" \"LOGOUT\"\n", args[0], args[0]); + return 0; + } + commands = args[1:args.length]; + + cli = new CliImpl(); + Bus.own_name( + BusType.SESSION, + "io.mainframe.shopsystem.Cli", + BusNameOwnerFlags.NONE, + on_bus_aquired, + on_name_aquired, + () => stderr.printf("Could not aquire name\n")); + + ml = new MainLoop(); + + ml.run(); + + return 0; +} + +void on_name_aquired() { + foreach (string cmd in commands) { + cli.send(cmd); + } + + // wait a minimal amount of time, to ensure the event was sent + TimeoutSource time = new TimeoutSource (100); + time.set_callback (() => { + ml.quit (); + return false; + }); + time.attach (ml.get_context ()); + +} + +void on_bus_aquired(DBusConnection con) { + try { + con.register_object("/io/mainframe/shopsystem/cli", cli); + } catch(IOError e) { + stderr.printf("Could not register service\n"); + } + +}
\ No newline at end of file |