]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- work on dbus interface
authorArvin Schnell <aschnell@suse.de>
Wed, 1 Aug 2012 12:32:58 +0000 (14:32 +0200)
committerArvin Schnell <aschnell@suse.de>
Wed, 1 Aug 2012 12:32:58 +0000 (14:32 +0200)
server/MetaSnapper.cc
server/MetaSnapper.h
server/snapperd.cc
snapper/Snapper.cc
snapper/Snapper.h

index d3cde7cea72f26b020ff5800fd8944716cd22755..c4cfdfe20729607982cffe77d7bc4398d1c8d415 100644 (file)
@@ -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);
+}
index 5d2455ff3954eb65e546e5eb68310d72d62f7718..1d3a1996539e946c75f29fe9b1023b69cc2518b0 100644 (file)
@@ -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<MetaSnapper> entries;
@@ -87,7 +91,4 @@ private:
 };
 
 
-extern MetaSnappers meta_snappers;
-
-
 #endif
index 8118e5fbd8ef1386b1d7e7dc290726c25e095f49..7cd476834a3524bc3325fddfe07b08294152032e 100644 (file)
@@ -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);
 
index 513ee591de3b40ab1e72cb9466e63ff659cc78cd..e8d14adc9d6676f8bce186290ec534e25b165278 100644 (file)
@@ -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<string, string> raw = config.getAllValues();
+
+       return ConfigInfo(config_name, subvolume, raw);
+    }
+
+
     list<ConfigInfo>
     Snapper::getConfigs()
     {
@@ -531,14 +545,7 @@ namespace snapper
            {
                try
                {
-                   SysconfigFile config(CONFIGSDIR "/" + *it);
-
-                   string subvolume = "/";
-                   config.getValue("SUBVOLUME", subvolume);
-
-                   map<string, string> raw = config.getAllValues();
-
-                   config_infos.push_back(ConfigInfo(*it, subvolume, raw));
+                   config_infos.push_back(getConfig(*it));
                }
                catch (const FileNotFoundException& e)
                {
index ea6b5c2ee47a1311b6b278b88b5fec0ff73a130c..dcd857c8da997528737d8af4d9a7bcbcb2a32672 100644 (file)
@@ -125,6 +125,7 @@ namespace snapper
 
        const vector<string>& getIgnorePatterns() const { return ignore_patterns; }
 
+       static ConfigInfo getConfig(const string& config_name);
        static list<ConfigInfo> getConfigs();
        static void createConfig(const string& config_name, const string& subvolume,
                                 const string& fstype, const string& template_name);