From: Arvin Schnell Date: Fri, 3 Aug 2012 09:38:34 +0000 (+0200) Subject: - work on dbus interface X-Git-Tag: v0.1.3~171 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=cdca2bb02d0eeeec452fd3e7a532b93104a20d9a;p=thirdparty%2Fsnapper.git - work on dbus interface --- diff --git a/server/Client.cc b/server/Client.cc index 456d87c1..00c6d782 100644 --- a/server/Client.cc +++ b/server/Client.cc @@ -49,20 +49,12 @@ Client::~Client() for (list::iterator it = comparisons.begin(); it != comparisons.end(); ++it) { - const Snapper* s = (*it)->getSnapper(); - - for (MetaSnappers::iterator it2 = meta_snappers.begin(); it2 != meta_snappers.end(); ++it2) - { - if (it2->is_equal(s)) - it2->dec_use_count(); - } - - delete *it; + delete_comparison(it); } } -Comparison* +list::iterator Client::find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1, Snapshots::const_iterator snapshot2) { @@ -70,14 +62,14 @@ Client::find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1, { if ((*it)->getSnapper() == snapper && (*it)->getSnapshot1() == snapshot1 && (*it)->getSnapshot2() == snapshot2) - return *it; + return it; } throw NoComparison(); } -Comparison* +list::iterator Client::find_comparison(Snapper* snapper, unsigned int number1, unsigned int number2) { Snapshots& snapshots = snapper->getSnapshots(); @@ -88,6 +80,21 @@ Client::find_comparison(Snapper* snapper, unsigned int number1, unsigned int num } +void +Client::delete_comparison(list::iterator it) +{ + const Snapper* s = (*it)->getSnapper(); + + for (MetaSnappers::iterator it2 = meta_snappers.begin(); it2 != meta_snappers.end(); ++it2) + { + if (it2->is_equal(s)) + it2->dec_use_count(); + } + + delete *it; +} + + void Client::add_lock(const string& config_name) { @@ -944,7 +951,10 @@ Client::delete_comparison(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - // TODO + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); + + delete_comparison(it2); + comparisons.erase(it2); DBus::MessageMethodReturn reply(msg); @@ -969,9 +979,9 @@ Client::get_files(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); - const Files& files = comparison->getFiles(); + const Files& files = (*it2)->getFiles(); DBus::MessageMethodReturn reply(msg); @@ -1002,9 +1012,9 @@ Client::get_diff(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); - Files& files = comparison->getFiles(); + Files& files = (*it2)->getFiles(); Files::iterator it3 = files.find(filename); if (it3 == files.end()) @@ -1043,9 +1053,9 @@ Client::set_undo(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); - Files& files = comparison->getFiles(); + Files& files = (*it2)->getFiles(); for (list::const_iterator it2 = undos.begin(); it2 != undos.end(); ++it2) { @@ -1080,9 +1090,9 @@ Client::set_undo_all(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it3 = find_comparison(it->getSnapper(), num1, num2); - Files& files = comparison->getFiles(); + Files& files = (*it3)->getFiles(); for (Files::iterator it2 = files.begin(); it2 != files.end(); ++it2) { @@ -1112,9 +1122,9 @@ Client::get_undo_steps(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); - vector undo_steps = comparison->getUndoSteps(); + vector undo_steps = (*it2)->getUndoSteps(); DBus::MessageMethodReturn reply(msg); @@ -1143,11 +1153,11 @@ Client::do_undo_step(DBus::Connection& conn, DBus::Message& msg) check_permission(conn, msg, *it); - Comparison* comparison = find_comparison(it->getSnapper(), num1, num2); + list::iterator it2 = find_comparison(it->getSnapper(), num1, num2); lock.unlock(); - bool ret = comparison->doUndoStep(undo_step); + bool ret = (*it2)->doUndoStep(undo_step); lock.lock(); diff --git a/server/Client.h b/server/Client.h index 9715b22a..143627c2 100644 --- a/server/Client.h +++ b/server/Client.h @@ -109,10 +109,14 @@ public: Client(const string& name); ~Client(); - Comparison* find_comparison(Snapper* snapper, unsigned int number1, unsigned int number2); + list::iterator find_comparison(Snapper* snapper, unsigned int number1, + unsigned int number2); - Comparison* find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1, - Snapshots::const_iterator snapshot2); + list::iterator find_comparison(Snapper* snapper, + Snapshots::const_iterator snapshot1, + Snapshots::const_iterator snapshot2); + + void delete_comparison(list::iterator); void add_lock(const string& config_name); void remove_lock(const string& config_name);