From 7bfb48ef84384ff0460f273ea5841fba628d2a46 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Tue, 26 Mar 2013 15:52:57 +0100 Subject: code restructure --- src/config/Makefile | 9 ++++++ src/config/config-interface.vala | 26 +++++++++++++++++ src/config/config.vala | 62 ++++++++++++++++++++++++++++++++++++++++ src/config/main.vala | 40 ++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 src/config/Makefile create mode 100644 src/config/config-interface.vala create mode 100644 src/config/config.vala create mode 100644 src/config/main.vala (limited to 'src/config') diff --git a/src/config/Makefile b/src/config/Makefile new file mode 100644 index 0000000..0e81ee9 --- /dev/null +++ b/src/config/Makefile @@ -0,0 +1,9 @@ +all: config + +config: main.vala config.vala config-interface.vala + valac -o $@ --pkg gio-2.0 $^ + +clean: + rm -rf config + +.PHONY: all clean diff --git a/src/config/config-interface.vala b/src/config/config-interface.vala new file mode 100644 index 0000000..c34e3a7 --- /dev/null +++ b/src/config/config-interface.vala @@ -0,0 +1,26 @@ +/* Copyright 2013, Sebastian Reichel + * + * 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. + */ + +[DBus (name = "io.mainframe.shopsystem.Config")] +public interface Config : Object { + public abstract bool has_group(string group_name) throws IOError, KeyFileError; + public abstract bool has_key(string group_name, string key) throws IOError, KeyFileError; + public abstract string get_string(string group_name, string key) throws IOError, KeyFileError; + public abstract bool get_boolean(string group_name, string key) throws IOError, KeyFileError; + public abstract int get_integer(string group_name, string key) throws IOError, KeyFileError; + public abstract int64 get_int64(string group_name, string key) throws IOError, KeyFileError; + public abstract uint64 get_uint64(string group_name, string key) throws IOError, KeyFileError; + public abstract double get_double(string group_name, string key) throws IOError, KeyFileError; +} diff --git a/src/config/config.vala b/src/config/config.vala new file mode 100644 index 0000000..60fd835 --- /dev/null +++ b/src/config/config.vala @@ -0,0 +1,62 @@ +/* Copyright 2013, Sebastian Reichel + * + * 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. + */ + +[DBus (name = "io.mainframe.shopsystem.Config")] +public class Cfg { + + private KeyFile file; + + public Cfg(string file) { + try { + this.file = new KeyFile(); + this.file.load_from_file(file, KeyFileFlags.NONE); + } catch(Error e) { + error("Could not load configuration file: %s", e.message); + } + } + + public bool has_group(string group_name) throws KeyFileError { + return file.has_group(group_name); + } + + public bool has_key(string group_name, string key) throws KeyFileError { + return file.has_key(group_name, key); + } + + public string get_string(string group_name, string key) throws KeyFileError { + return file.get_string(group_name, key); + } + + public bool get_boolean(string group_name, string key) throws KeyFileError { + return file.get_boolean(group_name, key); + } + + public int get_integer(string group_name, string key) throws KeyFileError { + return file.get_integer(group_name, key); + } + + public int64 get_int64(string group_name, string key) throws KeyFileError { + return file.get_int64(group_name, key); + } + + public uint64 get_uint64(string group_name, string key) throws KeyFileError { + return file.get_uint64(group_name, key); + } + + public double get_double(string group_name, string key) throws KeyFileError { + return file.get_double(group_name, key); + } + +} diff --git a/src/config/main.vala b/src/config/main.vala new file mode 100644 index 0000000..aa971d6 --- /dev/null +++ b/src/config/main.vala @@ -0,0 +1,40 @@ +/* Copyright 2013, Sebastian Reichel + * + * 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. + */ + +Cfg cfg; + +public static int main(string[] args) { + cfg = new Cfg("../../ktt-shopsystem.cfg"); + + Bus.own_name( + BusType.SESSION, + "io.mainframe.shopsystem.Config", + BusNameOwnerFlags.NONE, + on_bus_aquired, + () => {}, + () => stderr.printf("Could not aquire name\n")); + + new MainLoop().run(); + + return 0; +} + +void on_bus_aquired(DBusConnection con) { + try { + con.register_object("/io/mainframe/shopsystem/config", cfg); + } catch(IOError e) { + stderr.printf("Could not register service\n"); + } +} -- cgit v1.2.3