From: Arvin Schnell Date: Thu, 19 Jul 2012 12:24:03 +0000 (+0200) Subject: - work on dbus interface X-Git-Tag: v0.1.3~205 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=16e508b86f6d3921832c35f2b55ee14849fe76db;p=thirdparty%2Fsnapper.git - work on dbus interface --- diff --git a/server/Client.cc b/server/Client.cc index 2ec50d81..723833de 100644 --- a/server/Client.cc +++ b/server/Client.cc @@ -20,10 +20,6 @@ */ -#include - - - #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 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 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(); } diff --git a/server/Client.h b/server/Client.h index 975ff51b..e3f7c3c4 100644 --- a/server/Client.h +++ b/server/Client.h @@ -26,13 +26,17 @@ #include #include +#include #include +#include #include #include #include #include +#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 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 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: diff --git a/server/Makefile.am b/server/Makefile.am index a59a2be6..e0665a56 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -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 diff --git a/server/snapperd.cc b/server/snapperd.cc index d3b3758e..a4be8890 100644 --- a/server/snapperd.cc +++ b/server/snapperd.cc @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -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 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; diff --git a/snapper/Comparison.cc b/snapper/Comparison.cc index 81cc34ad..1df35831 100644 --- a/snapper/Comparison.cc +++ b/snapper/Comparison.cc @@ -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 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(); - } - } diff --git a/snapper/Comparison.h b/snapper/Comparison.h index 0250c25a..e38ece77 100644 --- a/snapper/Comparison.h +++ b/snapper/Comparison.h @@ -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; }; diff --git a/snapper/File.cc b/snapper/File.cc index 4ed05328..75996913 100644 --- a/snapper/File.cc +++ b/snapper/File.cc @@ -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::reverse_iterator it = entries.rbegin(); it != entries.rend(); ++it) - { - if (it->getUndo()) - { - if (it->getPreToPostStatus() == CREATED) - if (!it->doUndo()) - error = true; - } - } - - for (vector::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) { diff --git a/snapper/File.h b/snapper/File.h index 9482990b..5ab510f4 100644 --- a/snapper/File.h +++ b/snapper/File.h @@ -195,8 +195,6 @@ namespace snapper bool doUndoStep(const UndoStep& undo_step); - bool doUndo(); - const Comparison* comparison; vector entries; diff --git a/snapper/Snapper.cc b/snapper/Snapper.cc index d928814e..513ee591 100644 --- a/snapper/Snapper.cc +++ b/snapper/Snapper.cc @@ -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); diff --git a/snapper/Snapper.h b/snapper/Snapper.h index ee15d9dd..ea6b5c2e 100644 --- a/snapper/Snapper.h +++ b/snapper/Snapper.h @@ -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& getIgnorePatterns() const { return ignore_patterns; } static list getConfigs(); @@ -189,9 +155,6 @@ namespace snapper Snapshots snapshots; - CompareCallback* compare_callback; - UndoCallback* undo_callback; - }; };