From: Arvin Schnell Date: Wed, 1 Aug 2012 12:32:58 +0000 (+0200) Subject: - work on dbus interface X-Git-Tag: v0.1.3~180 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f85ff7935fdd47e853f3b4be5be72aab27b73acb;p=thirdparty%2Fsnapper.git - work on dbus interface --- diff --git a/server/MetaSnapper.cc b/server/MetaSnapper.cc index d3cde7ce..c4cfdfe2 100644 --- a/server/MetaSnapper.cc +++ b/server/MetaSnapper.cc @@ -173,5 +173,28 @@ MetaSnappers::find(const string& config_name) } -MetaSnappers meta_snappers; +void +MetaSnappers::createConfig(const string& config_name, const string& subvolume, + const string& fstype, const string& template_name) +{ + // TODO checks + + Snapper::createConfig(config_name, subvolume, fstype, template_name); + + ConfigInfo config_info = Snapper::getConfig(config_name); + MetaSnapper meta_snapper(config_info); + entries.push_back(meta_snapper); +} + +void +MetaSnappers::deleteConfig(const string& config_name) +{ + iterator it = find(config_name); + if (it == end()) + throw; + + Snapper::deleteConfig(config_name); + + entries.erase(it); +} diff --git a/server/MetaSnapper.h b/server/MetaSnapper.h index 5d2455ff..1d3a1996 100644 --- a/server/MetaSnapper.h +++ b/server/MetaSnapper.h @@ -80,6 +80,10 @@ public: iterator find(const string& config_name); + void createConfig(const string& config_name, const string& subvolume, const string& fstype, + const string& template_name); + void deleteConfig(const string& config_name); + private: list entries; @@ -87,7 +91,4 @@ private: }; -extern MetaSnappers meta_snappers; - - #endif diff --git a/server/snapperd.cc b/server/snapperd.cc index 8118e5fb..7cd47683 100644 --- a/server/snapperd.cc +++ b/server/snapperd.cc @@ -56,7 +56,7 @@ using namespace snapper; Clients clients; - +MetaSnappers meta_snappers; boost::shared_mutex big_mutex; @@ -420,9 +420,7 @@ Client::create_config(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg); - Snapper::createConfig(config_name, subvolume, fstype, template_name); - - // TODO update meta_snappers + meta_snappers.createConfig(config_name, subvolume, fstype, template_name); DBus::MessageMethodReturn reply(msg); @@ -446,9 +444,7 @@ Client::delete_config(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg); - Snapper::deleteConfig(config_name); - - // TODO update meta_snappers + meta_snappers.deleteConfig(config_name); DBus::MessageMethodReturn reply(msg); diff --git a/snapper/Snapper.cc b/snapper/Snapper.cc index 513ee591..e8d14adc 100644 --- a/snapper/Snapper.cc +++ b/snapper/Snapper.cc @@ -513,6 +513,20 @@ namespace snapper } + ConfigInfo + Snapper::getConfig(const string& config_name) + { + SysconfigFile config(CONFIGSDIR "/" + config_name); + + string subvolume = "/"; + config.getValue("SUBVOLUME", subvolume); + + map raw = config.getAllValues(); + + return ConfigInfo(config_name, subvolume, raw); + } + + list Snapper::getConfigs() { @@ -531,14 +545,7 @@ namespace snapper { try { - SysconfigFile config(CONFIGSDIR "/" + *it); - - string subvolume = "/"; - config.getValue("SUBVOLUME", subvolume); - - map raw = config.getAllValues(); - - config_infos.push_back(ConfigInfo(*it, subvolume, raw)); + config_infos.push_back(getConfig(*it)); } catch (const FileNotFoundException& e) { diff --git a/snapper/Snapper.h b/snapper/Snapper.h index ea6b5c2e..dcd857c8 100644 --- a/snapper/Snapper.h +++ b/snapper/Snapper.h @@ -125,6 +125,7 @@ namespace snapper const vector& getIgnorePatterns() const { return ignore_patterns; } + static ConfigInfo getConfig(const string& config_name); static list getConfigs(); static void createConfig(const string& config_name, const string& subvolume, const string& fstype, const string& template_name);