]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- work on dbus interface
authorArvin Schnell <aschnell@suse.de>
Thu, 19 Jul 2012 12:24:03 +0000 (14:24 +0200)
committerArvin Schnell <aschnell@suse.de>
Thu, 19 Jul 2012 12:24:03 +0000 (14:24 +0200)
server/Client.cc
server/Client.h
server/Makefile.am
server/snapperd.cc
snapper/Comparison.cc
snapper/Comparison.h
snapper/File.cc
snapper/File.h
snapper/Snapper.cc
snapper/Snapper.h

index 2ec50d8191551f7886bdc4589ba2bc9a4c30b5be..723833de4ded99e9c44ba4de18a2f4acd739d330 100644 (file)
  */
 
 
-#include <algorithm>
-
-
-
 #include "Client.h"
 #include "MetaSnapper.h"
 
@@ -38,6 +34,9 @@ bool contains(const ListType& l, const Type& value)
 Client::Client(const string& name)
     : name(name)
 {
+    c = new boost::condition_variable;
+    m = new boost::mutex;
+    t = NULL;
 }
 
 
@@ -94,6 +93,48 @@ Client::has_lock(const string& config_name) const
 }
 
 
+void
+Client::add_task(DBus::Connection& conn, DBus::Message& msg)
+{
+#if 1
+
+    if (!t)
+       t = new boost::thread(boost::bind(&Client::worker, this));
+
+    boost::unique_lock<boost::mutex> l(*m);
+    tasks.push(Task(conn, msg));
+    l.unlock();
+
+    c->notify_one();
+
+#else
+
+    dispatch(conn, msg);
+
+#endif
+}
+
+
+void
+Client::worker()
+{
+    while (true)
+    {
+        boost::unique_lock<boost::mutex> l(*m);
+
+        while (tasks.empty())
+            c->wait(l);
+
+        Task task = tasks.front();
+        tasks.pop();
+
+        l.unlock();
+
+       dispatch(task.conn, task.msg);
+    }
+}
+
+
 Clients::iterator
 Clients::find(const string& name)
 {
@@ -105,10 +146,11 @@ Clients::find(const string& name)
 }
 
 
-void
+Clients::iterator
 Clients::add(const string& name)
 {
     entries.push_back(Client(name));
+    return --entries.end();
 }
 
 
index 975ff51b0b4c1e388a02d0cbea5348045b2e2ce7..e3f7c3c4219aa439e932d2b14c7e2b4e14d2d5e3 100644 (file)
 
 #include <string>
 #include <list>
+#include <queue>
 #include <set>
+#include <boost/thread.hpp>
 
 #include <snapper/Snapper.h>
 #include <snapper/Snapshot.h>
 #include <snapper/Factory.h>
 #include <snapper/Comparison.h>
 
+#include "dbus/DBusConnection.h"
+#include "dbus/DBusMessage.h"
 
 using namespace std;
 using namespace snapper;
@@ -45,7 +49,40 @@ struct NoComparison : public std::exception
 };
 
 
-class Client
+class Commands
+{
+public:
+
+    void list_configs(DBus::Connection& conn, DBus::Message& msg);
+    void get_config(DBus::Connection& conn, DBus::Message& msg);
+    void create_config(DBus::Connection& conn, DBus::Message& msg);
+    void delete_config(DBus::Connection& conn, DBus::Message& msg);
+    void lock_config(DBus::Connection& conn, DBus::Message& msg);
+    void unlock_config(DBus::Connection& conn, DBus::Message& msg);
+    void list_snapshots(DBus::Connection& conn, DBus::Message& msg);
+    void get_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void set_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void create_single_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void create_post_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void delete_snapshots(DBus::Connection& conn, DBus::Message& msg);
+    void mount_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void umount_snapshot(DBus::Connection& conn, DBus::Message& msg);
+    void create_comparison(DBus::Connection& conn, DBus::Message& msg);
+    void get_files(DBus::Connection& conn, DBus::Message& msg);
+    void get_diff(DBus::Connection& conn, DBus::Message& msg);
+    void set_undo(DBus::Connection& conn, DBus::Message& msg);
+    void set_undo_all(DBus::Connection& conn, DBus::Message& msg);
+    void get_undo_steps(DBus::Connection& conn, DBus::Message& msg);
+    void do_undo_step(DBus::Connection& conn, DBus::Message& msg);
+    void debug(DBus::Connection& conn, DBus::Message& msg);
+
+    void dispatch(DBus::Connection& conn, DBus::Message& msg);
+
+};
+
+
+class Client : public Commands
 {
 public:
 
@@ -68,6 +105,24 @@ public:
 
     set<string> locks;
 
+    struct Task
+    {
+       Task(DBus::Connection& conn, DBus::Message& msg) : conn(conn), msg(msg) {}
+
+       DBus::Connection& conn;
+       DBus::Message msg;
+    };
+
+    boost::condition_variable* c;
+    boost::mutex* m;
+    boost::thread* t;
+
+    queue<Task> tasks;
+
+    void add_task(DBus::Connection& conn, DBus::Message& msg);
+
+    void worker();
+
 };
 
 
@@ -88,7 +143,7 @@ public:
 
     iterator find(const string& name);
 
-    void add(const string& name);
+    iterator add(const string& name);
     void remove(const string& name);
 
 private:
index a59a2be6ee3834e4e3918a2811af1cf1ad1eda51..e0665a563ee60e2f36e5a11e607ff612851325e4 100644 (file)
@@ -10,7 +10,6 @@ sbin_PROGRAMS = snapperd
 snapperd_SOURCES =                                     \
        snapperd.cc                                     \
        Client.cc               Client.h                \
-       Job.cc                  Job.h                   \
        MetaSnapper.cc          MetaSnapper.h           \
        Types.cc                Types.h
 
index d3b3758e34488f068e02a55b18dd17d2a58a2eb4..a4be88907a4a46890c2186e7408b43d481e8c064 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <dbus/dbus.h>
 
+#include <iostream>
 #include <string>
 #include <boost/algorithm/string.hpp>
 
@@ -41,7 +42,6 @@
 
 #include "MetaSnapper.h"
 #include "Client.h"
-#include "Job.h"
 #include "Types.h"
 
 
@@ -56,8 +56,6 @@ using namespace snapper;
 
 Clients clients;
 
-Jobs jobs;
-
 
 void
 reply_to_introspect(DBus::Connection& conn, DBus::Message& msg)
@@ -364,7 +362,7 @@ send_signal_snapshots_deleted(DBus::Connection& conn, const string& config_name,
 
 
 void
-reply_to_command_list_configs(DBus::Connection& conn, DBus::Message& msg)
+Commands::list_configs(DBus::Connection& conn, DBus::Message& msg)
 {
     y2mil("ListConfigs");
 
@@ -380,7 +378,7 @@ reply_to_command_list_configs(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_get_config(DBus::Connection& conn, DBus::Message& msg)
+Commands::get_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
 
@@ -406,7 +404,7 @@ reply_to_command_get_config(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_create_config(DBus::Connection& conn, DBus::Message& msg)
+Commands::create_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     string subvolume;
@@ -432,7 +430,7 @@ reply_to_command_create_config(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_delete_config(DBus::Connection& conn, DBus::Message& msg)
+Commands::delete_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
 
@@ -454,7 +452,7 @@ reply_to_command_delete_config(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_lock_config(DBus::Connection& conn, DBus::Message& msg)
+Commands::lock_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
 
@@ -477,7 +475,7 @@ reply_to_command_lock_config(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_unlock_config(DBus::Connection& conn, DBus::Message& msg)
+Commands::unlock_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
 
@@ -500,7 +498,7 @@ reply_to_command_unlock_config(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_list_snapshots(DBus::Connection& conn, DBus::Message& msg)
+Commands::list_snapshots(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
 
@@ -523,7 +521,7 @@ reply_to_command_list_snapshots(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_get_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::get_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num;
@@ -551,7 +549,7 @@ reply_to_command_get_snapshot(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_set_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::set_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num;
@@ -584,7 +582,7 @@ reply_to_command_set_snapshot(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_create_single_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::create_single_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     string description;
@@ -618,7 +616,7 @@ reply_to_command_create_single_snapshot(DBus::Connection& conn, DBus::Message& m
 
 
 void
-reply_to_command_create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     string description;
@@ -652,7 +650,7 @@ reply_to_command_create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_create_post_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::create_post_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     unsigned int pre_num;
@@ -691,7 +689,7 @@ reply_to_command_create_post_snapshot(DBus::Connection& conn, DBus::Message& msg
 
 
 void
-reply_to_command_delete_snapshots(DBus::Connection& conn, DBus::Message& msg)
+Commands::delete_snapshots(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     list<dbus_uint32_t> nums;
@@ -724,7 +722,7 @@ reply_to_command_delete_snapshots(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_mount_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::mount_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num;
@@ -751,7 +749,7 @@ reply_to_command_mount_snapshot(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_umount_snapshot(DBus::Connection& conn, DBus::Message& msg)
+Commands::umount_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num;
@@ -777,27 +775,8 @@ reply_to_command_umount_snapshot(DBus::Connection& conn, DBus::Message& msg)
 }
 
 
-struct Comparing : public Job
-{
-    Comparing(Comparison* comparison)
-       : comparison(comparison) {}
-
-    DBus::Connection* conn;
-    DBus::MessageMethodReturn* reply;
-
-    Comparison* comparison;
-
-    void done();
-
-protected:
-
-    virtual void operator()();
-
-};
-
-
 void
-reply_to_command_create_comparison(DBus::Connection& conn, DBus::Message& msg)
+Commands::create_comparison(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -815,42 +794,20 @@ reply_to_command_create_comparison(DBus::Connection& conn, DBus::Message& msg)
     Snapshots::const_iterator snapshot1 = snapshots.find(num1);
     Snapshots::const_iterator snapshot2 = snapshots.find(num2);
 
-    Comparison* comparison = new Comparison(snapper, snapshot1, snapshot2, true);
+    Comparison* comparison = new Comparison(snapper, snapshot1, snapshot2);
 
     Clients::iterator it = clients.find(msg.get_sender());
     assert(it != clients.end());
     it->comparisons.push_back(comparison);
 
-    Comparing* job = new Comparing(comparison);
-    job->conn = &conn;
-    job->reply = new DBus::MessageMethodReturn(msg);
-
-    jobs.add(job);
-}
-
-
-void
-Comparing::operator()()
-{
-    boost::this_thread::sleep(seconds(2));
-
-    comparison->initialize();
-
-    boost::this_thread::sleep(seconds(2));
-}
-
-
-void
-Comparing::done()
-{
-    conn->send(*reply);
+    DBus::MessageMethodReturn reply(msg);
 
-    delete reply;
+    conn.send(reply);
 }
 
 
 void
-reply_to_command_get_files(DBus::Connection& conn, DBus::Message& msg)
+Commands::get_files(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -882,7 +839,7 @@ reply_to_command_get_files(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_get_diff(DBus::Connection& conn, DBus::Message& msg)
+Commands::get_diff(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -921,7 +878,7 @@ reply_to_command_get_diff(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_set_undo(DBus::Connection& conn, DBus::Message& msg)
+Commands::set_undo(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -960,7 +917,7 @@ reply_to_command_set_undo(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_set_undo_all(DBus::Connection& conn, DBus::Message& msg)
+Commands::set_undo_all(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -995,7 +952,7 @@ reply_to_command_set_undo_all(DBus::Connection& conn, DBus::Message& msg)
 
 
 void
-reply_to_command_get_undo_steps(DBus::Connection& conn, DBus::Message& msg)
+Commands::get_undo_steps(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -1026,28 +983,8 @@ reply_to_command_get_undo_steps(DBus::Connection& conn, DBus::Message& msg)
 }
 
 
-struct Undoing : public Job
-{
-    Undoing(Comparison* comparison, const UndoStep& undo_step)
-       : comparison(comparison), undo_step(undo_step) {}
-
-    DBus::Connection* conn;
-    DBus::MessageMethodReturn* reply;
-
-    Comparison* comparison;
-    UndoStep undo_step;
-
-    void done();
-
-protected:
-
-    virtual void operator()();
-
-};
-
-
 void
-reply_to_command_do_undo_step(DBus::Connection& conn, DBus::Message& msg)
+Commands::do_undo_step(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num1, num2;
@@ -1068,39 +1005,19 @@ reply_to_command_do_undo_step(DBus::Connection& conn, DBus::Message& msg)
 
     Comparison* comparison = it->find_comparison(config_name, num1, num2);
 
-    Undoing* job = new Undoing(comparison, undo_step);
-    job->conn = &conn;
-    job->reply = new DBus::MessageMethodReturn(msg);
-
-    jobs.add(job);
-}
-
-
-void
-Undoing::operator()()
-{
-    boost::this_thread::sleep(seconds(2));
-
     bool ret = comparison->doUndoStep(undo_step);
 
-    DBus::Hoho hoho(*reply);
-    hoho << ret;
-
-    boost::this_thread::sleep(seconds(2));
-}
-
+    DBus::MessageMethodReturn reply(msg);
 
-void
-Undoing::done()
-{
-    conn->send(*reply);
+    DBus::Hoho hoho(reply);
+    hoho << ret;
 
-    delete reply;
+    conn.send(reply);
 }
 
 
 void
-reply_to_command_debug(DBus::Connection& conn, DBus::Message& msg)
+Commands::debug(DBus::Connection& conn, DBus::Message& msg)
 {
     check_permission(conn, msg);
 
@@ -1133,23 +1050,16 @@ reply_to_command_debug(DBus::Connection& conn, DBus::Message& msg)
        hoho << s.str();
     }
 
-    if (!jobs.empty())
-    {
-       std::ostringstream s;
-       s << "running jobs:" << jobs.size();
-       hoho << s.str();
-    }
-
     hoho.close_array();
 
     conn.send(reply);
 }
 
 
-void
+Clients::iterator
 client_connected(const string& name)
 {
-    clients.add(name);
+    return clients.add(name);
 }
 
 
@@ -1161,56 +1071,56 @@ client_disconnected(const string& name)
 
 
 void
-dispatch(DBus::Connection& conn, DBus::Message& msg)
+Commands::dispatch(DBus::Connection& conn, DBus::Message& msg)
 {
     try
     {
        if (msg.is_method_call(INTERFACE, "ListConfigs"))
-           reply_to_command_list_configs(conn, msg);
+           list_configs(conn, msg);
        else if (msg.is_method_call(INTERFACE, "CreateConfig"))
-           reply_to_command_create_config(conn, msg);
+           create_config(conn, msg);
        else if (msg.is_method_call(INTERFACE, "GetConfig"))
-           reply_to_command_get_config(conn, msg);
+           get_config(conn, msg);
        else if (msg.is_method_call(INTERFACE, "DeleteConfig"))
-           reply_to_command_delete_config(conn, msg);
+           delete_config(conn, msg);
        else if (msg.is_method_call(INTERFACE, "LockConfig"))
-           reply_to_command_lock_config(conn, msg);
+           lock_config(conn, msg);
        else if (msg.is_method_call(INTERFACE, "UnlockConfig"))
-           reply_to_command_unlock_config(conn, msg);
+           unlock_config(conn, msg);
        else if (msg.is_method_call(INTERFACE, "ListSnapshots"))
-           reply_to_command_list_snapshots(conn, msg);
+           list_snapshots(conn, msg);
        else if (msg.is_method_call(INTERFACE, "GetSnapshot"))
-           reply_to_command_get_snapshot(conn, msg);
+           get_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "SetSnapshot"))
-           reply_to_command_set_snapshot(conn, msg);
+           set_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "CreateSingleSnapshot"))
-           reply_to_command_create_single_snapshot(conn, msg);
+           create_single_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "CreatePreSnapshot"))
-           reply_to_command_create_pre_snapshot(conn, msg);
+           create_pre_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "CreatePostSnapshot"))
-           reply_to_command_create_post_snapshot(conn, msg);
+           create_post_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "DeleteSnapshots"))
-           reply_to_command_delete_snapshots(conn, msg);
+           delete_snapshots(conn, msg);
        else if (msg.is_method_call(INTERFACE, "MountSnapshot"))
-           reply_to_command_mount_snapshot(conn, msg);
+           mount_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "UmountSnapshot"))
-           reply_to_command_umount_snapshot(conn, msg);
+           umount_snapshot(conn, msg);
        else if (msg.is_method_call(INTERFACE, "CreateComparison"))
-           reply_to_command_create_comparison(conn, msg);
+           create_comparison(conn, msg);
        else if (msg.is_method_call(INTERFACE, "GetFiles"))
-           reply_to_command_get_files(conn, msg);
+           get_files(conn, msg);
        else if (msg.is_method_call(INTERFACE, "GetDiff"))
-           reply_to_command_get_diff(conn, msg);
+           get_diff(conn, msg);
        else if (msg.is_method_call(INTERFACE, "SetUndo"))
-           reply_to_command_set_undo(conn, msg);
+           set_undo(conn, msg);
        else if (msg.is_method_call(INTERFACE, "SetUndoAll"))
-           reply_to_command_set_undo_all(conn, msg);
+           set_undo_all(conn, msg);
        else if (msg.is_method_call(INTERFACE, "GetUndoSteps"))
-           reply_to_command_get_undo_steps(conn, msg);
+           get_undo_steps(conn, msg);
        else if (msg.is_method_call(INTERFACE, "DoUndoStep"))
-           reply_to_command_do_undo_step(conn, msg);
+           do_undo_step(conn, msg);
        else if (msg.is_method_call(INTERFACE, "Debug"))
-           reply_to_command_debug(conn, msg);
+           debug(conn, msg);
        else
        {
            DBus::MessageError reply(msg, "error.unknown_method", DBUS_ERROR_FAILED);
@@ -1277,12 +1187,10 @@ listen(DBus::Connection& conn)
     conn.add_match("type='signal', interface='" DBUS_INTERFACE_DBUS "', member='NameOwnerChanged'");
 
     int idle = 0;
-    while (++idle < 1000 || !clients.empty() || !jobs.empty())
+    while (++idle < 1000 || !clients.empty())
     {
        conn.read_write(100);   // TODO
 
-       jobs.handle();
-
        DBusMessage* tmp = dbus_connection_pop_message(conn.get_connection());
        if (!tmp)
            continue;
@@ -1303,13 +1211,15 @@ listen(DBus::Connection& conn)
                    break;
                }
 
-               if (clients.find(msg.get_sender()) == clients.end())
+               Clients::iterator client = clients.find(msg.get_sender());
+               if (client == clients.end())
                {
                    y2mil("client connected invisible '" << msg.get_sender() << "'");
-                   client_connected(msg.get_sender());
+                   client = client_connected(msg.get_sender());
                }
 
-               dispatch(conn, msg);
+               client->add_task(conn, msg);
+               boost::this_thread::sleep(boost::posix_time::seconds(2)); // TODO
            }
            break;
 
index 81cc34adeecff041fa78beae6de9d4745891ff8d..1df358311e96a6a81d966306f0b0f47a794049aa 100644 (file)
@@ -31,43 +31,23 @@ namespace snapper
 {
 
     Comparison::Comparison(const Snapper* snapper, Snapshots::const_iterator snapshot1,
-                          Snapshots::const_iterator snapshot2, bool delay)
-       : snapper(snapper), snapshot1(snapshot1), snapshot2(snapshot2), initialized(false),
-         files(this)
+                          Snapshots::const_iterator snapshot2)
+       : snapper(snapper), snapshot1(snapshot1), snapshot2(snapshot2), files(this)
     {
        if (snapshot1 == snapper->getSnapshots().end() ||
            snapshot2 == snapper->getSnapshots().end() ||
            snapshot1 == snapshot2)
            throw IllegalSnapshotException();
 
-       y2mil("num1:" << snapshot1->getNum() << " num2:" << snapshot2->getNum() << " delay:" <<
-             delay);
+       y2mil("num1:" << snapshot1->getNum() << " num2:" << snapshot2->getNum());
 
-       if (!delay)
-       {
-           files.initialize();
-           initialized = true;
-       }
-    }
-
-
-    void
-    Comparison::initialize()
-    {
-       if (!initialized)
-       {
-           files.initialize();
-           initialized = true;
-       }
+       files.initialize();
     }
 
 
     Files&
     Comparison::getFiles()
     {
-       if (!initialized)
-           throw;
-
        return files;
     }
 
@@ -75,9 +55,6 @@ namespace snapper
     const Files&
     Comparison::getFiles() const
     {
-       if (!initialized)
-           throw;
-
        return files;
     }
 
@@ -85,9 +62,6 @@ namespace snapper
     UndoStatistic
     Comparison::getUndoStatistic() const
     {
-       if (!initialized)
-           throw;
-
        return files.getUndoStatistic();
     }
 
@@ -95,9 +69,6 @@ namespace snapper
     vector<UndoStep>
     Comparison::getUndoSteps() const
     {
-       if (!initialized)
-           throw;
-
        return files.getUndoSteps();
     }
 
@@ -105,20 +76,7 @@ namespace snapper
     bool
     Comparison::doUndoStep(const UndoStep& undo_step)
     {
-       if (!initialized)
-           throw;
-
        return files.doUndoStep(undo_step);
     }
 
-
-    bool
-    Comparison::doUndo()
-    {
-       if (!initialized)
-           throw;
-
-       return files.doUndo();
-    }
-
 }
index 0250c25a81c26bfa2afe6fad517e1003b7252f37..e38ece772322213fa7d2a17ff56ab31aa1f14ba2 100644 (file)
@@ -37,16 +37,13 @@ namespace snapper
     public:
 
        Comparison(const Snapper* snapper, Snapshots::const_iterator snapshot1,
-                  Snapshots::const_iterator snapshot2, bool delay = false);
+                  Snapshots::const_iterator snapshot2);
 
        const Snapper* getSnapper() const { return snapper; }
 
        Snapshots::const_iterator getSnapshot1() const { return snapshot1; }
        Snapshots::const_iterator getSnapshot2() const { return snapshot2; }
 
-       void initialize();
-       bool isInitialized() const { return initialized; }
-
        Files& getFiles();
        const Files& getFiles() const;
 
@@ -56,8 +53,6 @@ namespace snapper
 
        bool doUndoStep(const UndoStep& undo_step);
 
-       bool doUndo();
-
     private:
 
        const Snapper* snapper;
@@ -65,8 +60,6 @@ namespace snapper
        Snapshots::const_iterator snapshot1;
        Snapshots::const_iterator snapshot2;
 
-       bool initialized;
-
        Files files;
 
     };
index 4ed0532889c3b3275281d72e19794861a81234de..759969130e115676d293eb396d0310677a6ed006 100644 (file)
@@ -117,9 +117,6 @@ namespace snapper
        y2mil("num1:" << comparison->getSnapshot1()->getNum() << " num2:" <<
              comparison->getSnapshot2()->getNum());
 
-       if (getSnapper()->getCompareCallback())
-           getSnapper()->getCompareCallback()->start(comparison);
-
        if (!comparison->getSnapshot1()->isCurrent())
            comparison->getSnapshot1()->mountFilesystemSnapshot();
        if (!comparison->getSnapshot2()->isCurrent())
@@ -136,9 +133,6 @@ namespace snapper
 
        sort(entries.begin(), entries.end());
 
-       if (getSnapper()->getCompareCallback())
-           getSnapper()->getCompareCallback()->stop(comparison);
-
        y2mil("found " << entries.size() << " lines");
     }
 
@@ -682,16 +676,6 @@ namespace snapper
        if (comparison->getSnapshot1()->isCurrent())
            throw IllegalSnapshotException();
 
-       if (getSnapper()->getUndoCallback())
-       {
-           switch (getAction())
-           {
-               case CREATE: getSnapper()->getUndoCallback()->createInfo(comparison, name); break;
-               case MODIFY: getSnapper()->getUndoCallback()->modifyInfo(comparison, name); break;
-               case DELETE: getSnapper()->getUndoCallback()->deleteInfo(comparison, name); break;
-           }
-       }
-
        bool error = false;
 
        if (getPreToPostStatus() & CREATED || getPreToPostStatus() & TYPE)
@@ -712,16 +696,6 @@ namespace snapper
                error = true;
        }
 
-       if (error && getSnapper()->getUndoCallback())
-       {
-           switch (getAction())
-           {
-               case CREATE: getSnapper()->getUndoCallback()->createError(comparison, name); break;
-               case MODIFY: getSnapper()->getUndoCallback()->modifyError(comparison, name); break;
-               case DELETE: getSnapper()->getUndoCallback()->deleteError(comparison, name); break;
-           }
-       }
-
        return error;
     }
 
@@ -806,48 +780,6 @@ namespace snapper
     }
 
 
-    bool
-    Files::doUndo()
-    {
-       if (comparison->getSnapshot1()->isCurrent())
-           throw IllegalSnapshotException();
-
-       y2mil("begin doUndo");
-
-       if (getSnapper()->getUndoCallback())
-           getSnapper()->getUndoCallback()->start(comparison);
-
-       bool error = false;
-
-       for (vector<File>::reverse_iterator it = entries.rbegin(); it != entries.rend(); ++it)
-       {
-           if (it->getUndo())
-           {
-               if (it->getPreToPostStatus() == CREATED)
-                   if (!it->doUndo())
-                       error = true;
-           }
-       }
-
-       for (vector<File>::iterator it = entries.begin(); it != entries.end(); ++it)
-       {
-           if (it->getUndo())
-           {
-               if (it->getPreToPostStatus() != CREATED)
-                   if (!it->doUndo())
-                       error = true;
-           }
-       }
-
-       if (getSnapper()->getUndoCallback())
-           getSnapper()->getUndoCallback()->stop(comparison);
-
-       y2mil("end doUndo");
-
-       return error;
-    }
-
-
     string
     statusToString(unsigned int status)
     {
index 9482990b067346c2c3d51adf63cda539a6bfdaf4..5ab510f4fd9aff33276f9564acf3a47e1e3b3e8b 100644 (file)
@@ -195,8 +195,6 @@ namespace snapper
 
        bool doUndoStep(const UndoStep& undo_step);
 
-       bool doUndo();
-
        const Comparison* comparison;
 
        vector<File> entries;
index d928814efcaf0970885400d657df0498e0cfc4ce..513ee591de3b40ab1e72cb9466e63ff659cc78cd 100644 (file)
@@ -49,7 +49,7 @@ namespace snapper
 
     Snapper::Snapper(const string& config_name, bool disable_filters)
        : config_name(config_name), config(NULL), subvolume("/"), filesystem(NULL),
-         snapshots(this), compare_callback(NULL), undo_callback(NULL)
+         snapshots(this)
     {
        y2mil("Snapper constructor");
        y2mil("libsnapper version " VERSION);
index ee15d9dd3570ca3493259818395c4da8a1e43943..ea6b5c2ee47a1311b6b278b88b5fec0ff73a130c 100644 (file)
@@ -40,34 +40,6 @@ namespace snapper
     class Comparison;
 
 
-    struct CompareCallback
-    {
-       CompareCallback() {}
-       virtual ~CompareCallback() {}
-
-       virtual void start(const Comparison* comparison) = 0;
-       virtual void stop(const Comparison* comparison) = 0;
-    };
-
-
-    struct UndoCallback
-    {
-       UndoCallback() {}
-       virtual ~UndoCallback() {}
-
-       virtual void start(const Comparison* comparison) = 0;
-       virtual void stop(const Comparison* comparison) = 0;
-
-       virtual void createInfo(const Comparison* comparison, const string& name) = 0;
-       virtual void modifyInfo(const Comparison* comparison, const string& name) = 0;
-       virtual void deleteInfo(const Comparison* comparison, const string& name) = 0;
-
-       virtual void createError(const Comparison* comparison, const string& name) = 0;
-       virtual void modifyError(const Comparison* comparison, const string& name) = 0;
-       virtual void deleteError(const Comparison* comparison, const string& name) = 0;
-    };
-
-
     struct ConfigInfo
     {
        ConfigInfo(const string& config_name, const string& subvolume,
@@ -151,12 +123,6 @@ namespace snapper
        bool doCleanupTimeline();
        bool doCleanupEmptyPrePost();
 
-       void setCompareCallback(CompareCallback* p) { compare_callback = p; }
-       CompareCallback* getCompareCallback() const { return compare_callback; }
-
-       void setUndoCallback(UndoCallback* p) { undo_callback = p; }
-       UndoCallback* getUndoCallback() const { return undo_callback; }
-
        const vector<string>& getIgnorePatterns() const { return ignore_patterns; }
 
        static list<ConfigInfo> getConfigs();
@@ -189,9 +155,6 @@ namespace snapper
 
        Snapshots snapshots;
 
-       CompareCallback* compare_callback;
-       UndoCallback* undo_callback;
-
     };
 
 };