From: Arvin Schnell Date: Mon, 16 Feb 2015 10:57:12 +0000 (+0100) Subject: - pass single struct instead of many values to create and modify snapshot functions X-Git-Tag: v0.2.6~1^2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ec3f2d115328016dcaa8ba9b508d2d20dc838f5;p=thirdparty%2Fsnapper.git - pass single struct instead of many values to create and modify snapshot functions --- diff --git a/examples/c++-lib/Create.cc b/examples/c++-lib/Create.cc index b0e4305f..c240137e 100644 --- a/examples/c++-lib/Create.cc +++ b/examples/c++-lib/Create.cc @@ -14,7 +14,12 @@ main(int argc, char** argv) { Snapper* sh = new Snapper(); - sh->createSingleSnapshot(getuid(), "test", "number", map()); + SCD scd; + scd.uid = getuid(); + scd.description = "test"; + scd.cleanup = "number"; + + sh->createSingleSnapshot(scd); delete sh; diff --git a/examples/c++-lib/CreateNumber.cc b/examples/c++-lib/CreateNumber.cc index 1719a019..94dafb0e 100644 --- a/examples/c++-lib/CreateNumber.cc +++ b/examples/c++-lib/CreateNumber.cc @@ -39,11 +39,14 @@ main() for (size_t i = 0; i < 100; ++i) { - map userdata; + SCD scd; + scd.uid = getuid(); + scd.description = "testsuite"; + scd.cleanup = "number"; if (i % 5 == 0) - userdata["important"] = "yes"; + scd.userdata["important"] = "yes"; - sh->createSingleSnapshot(getuid(), "testsuite", "number", userdata); + sh->createSingleSnapshot(scd); } delete sh; diff --git a/examples/c++-lib/CreateTimeline.cc b/examples/c++-lib/CreateTimeline.cc index 2ca03a54..22e93eb0 100644 --- a/examples/c++-lib/CreateTimeline.cc +++ b/examples/c++-lib/CreateTimeline.cc @@ -40,8 +40,12 @@ main() time_t t = time(NULL) - 100 * 24*60*60; while (t < time(NULL)) { - Snapshots::iterator snap = sh->createSingleSnapshot(getuid(), "testsuite", "timeline", - map()); + SCD scd; + scd.uid = getuid(); + scd.description = "testsuite"; + scd.cleanup = "timeline"; + + Snapshots::iterator snap = sh->createSingleSnapshot(scd); // snap->setDate(t); t += 60*60; diff --git a/server/Client.cc b/server/Client.cc index 1c1bfc41..ab6b803a 100644 --- a/server/Client.cc +++ b/server/Client.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) [2012-2014] Novell, Inc. + * Copyright (c) [2012-2015] Novell, Inc. * * All Rights Reserved. * @@ -823,12 +823,10 @@ Client::set_snapshot(DBus::Connection& conn, DBus::Message& msg) { string config_name; dbus_uint32_t num; - string description; - string cleanup; - map userdata; + SMD smd; DBus::Hihi hihi(msg); - hihi >> config_name >> num >> description >> cleanup >> userdata; + hihi >> config_name >> num >> smd.description >> smd.cleanup >> smd.userdata; y2deb("SetSnapshot config_name:" << config_name << " num:" << num); @@ -845,7 +843,7 @@ Client::set_snapshot(DBus::Connection& conn, DBus::Message& msg) if (snap == snapshots.end()) throw IllegalSnapshotException(); - snapper->modifySnapshot(snap, description, cleanup, userdata); + snapper->modifySnapshot(snap, smd); DBus::MessageMethodReturn reply(msg); @@ -859,26 +857,24 @@ void Client::create_single_snapshot(DBus::Connection& conn, DBus::Message& msg) { string config_name; - string description; - string cleanup; - map userdata; + SCD scd; DBus::Hihi hihi(msg); - hihi >> config_name >> description >> cleanup >> userdata; + hihi >> config_name >> scd.description >> scd.cleanup >> scd.userdata; - y2deb("CreateSingleSnapshot config_name:" << config_name << " description:" << description << - " cleanup:" << cleanup); + y2deb("CreateSingleSnapshot config_name:" << config_name << " description:" << scd.description << + " cleanup:" << scd.cleanup); boost::unique_lock lock(big_mutex); MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); + scd.uid = conn.get_unix_userid(msg); Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap1 = snapper->createSingleSnapshot(conn.get_unix_userid(msg), - description, cleanup, userdata); + Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd); DBus::MessageMethodReturn reply(msg); @@ -896,22 +892,20 @@ Client::create_single_snapshot_v2(DBus::Connection& conn, DBus::Message& msg) { string config_name; unsigned int parent_num; - bool read_only; - string description; - string cleanup; - map userdata; + SCD scd; DBus::Hihi hihi(msg); - hihi >> config_name >> parent_num >> read_only >> description >> cleanup >> userdata; + hihi >> config_name >> parent_num >> scd.read_only >> scd.description >> scd.cleanup >> scd.userdata; y2deb("CreateSingleSnapshotV2 config_name:" << config_name << " parent_num:" << parent_num << - " read_only:" << read_only << " description:" << description << " cleanup:" << cleanup); + " read_only:" << scd.read_only << " description:" << scd.description << " cleanup:" << scd.cleanup); boost::unique_lock lock(big_mutex); MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); + scd.uid = conn.get_unix_userid(msg); Snapper* snapper = it->getSnapper(); @@ -919,9 +913,7 @@ Client::create_single_snapshot_v2(DBus::Connection& conn, DBus::Message& msg) Snapshots::iterator parent = snapshots.find(parent_num); - Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, read_only, - conn.get_unix_userid(msg), - description, cleanup, userdata); + Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, scd); DBus::MessageMethodReturn reply(msg); @@ -938,29 +930,24 @@ void Client::create_single_snapshot_of_default(DBus::Connection& conn, DBus::Message& msg) { string config_name; - bool read_only; - string description; - string cleanup; - map userdata; + SCD scd; DBus::Hihi hihi(msg); - hihi >> config_name >> read_only >> description >> cleanup >> userdata; + hihi >> config_name >> scd.read_only >> scd.description >> scd.cleanup >> scd.userdata; y2deb("CreateSingleSnapshotOfDefault config_name:" << config_name << " read_only:" << - read_only << " description:" << description << " cleanup:" << cleanup); + scd.read_only << " description:" << scd.description << " cleanup:" << scd.cleanup); boost::unique_lock lock(big_mutex); MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); + scd.uid = conn.get_unix_userid(msg); Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(read_only, - conn.get_unix_userid(msg), - description, cleanup, - userdata); + Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd); DBus::MessageMethodReturn reply(msg); @@ -977,26 +964,24 @@ void Client::create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg) { string config_name; - string description; - string cleanup; - map userdata; + SCD scd; DBus::Hihi hihi(msg); - hihi >> config_name >> description >> cleanup >> userdata; + hihi >> config_name >> scd.description >> scd.cleanup >> scd.userdata; - y2deb("CreatePreSnapshot config_name:" << config_name << " description:" << description << - " cleanup:" << cleanup); + y2deb("CreatePreSnapshot config_name:" << config_name << " description:" << scd.description << + " cleanup:" << scd.cleanup); boost::unique_lock lock(big_mutex); MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); + scd.uid = conn.get_unix_userid(msg); Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap1 = snapper->createPreSnapshot(conn.get_unix_userid(msg), description, - cleanup, userdata); + Snapshots::iterator snap1 = snapper->createPreSnapshot(scd); DBus::MessageMethodReturn reply(msg); @@ -1014,29 +999,27 @@ Client::create_post_snapshot(DBus::Connection& conn, DBus::Message& msg) { string config_name; unsigned int pre_num; - string description; - string cleanup; - map userdata; + SCD scd; DBus::Hihi hihi(msg); - hihi >> config_name >> pre_num >> description >> cleanup >> userdata; + hihi >> config_name >> pre_num >> scd.description >> scd.cleanup >> scd.userdata; y2deb("CreatePostSnapshot config_name:" << config_name << " pre_num:" << pre_num << - " description:" << description << " cleanup:" << cleanup); + " description:" << scd.description << " cleanup:" << scd.cleanup); boost::unique_lock lock(big_mutex); MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); + scd.uid = conn.get_unix_userid(msg); Snapper* snapper = it->getSnapper(); Snapshots& snapshots = snapper->getSnapshots(); Snapshots::iterator snap1 = snapshots.find(pre_num); - Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, conn.get_unix_userid(msg), - description, cleanup, userdata); + Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, scd); bool background_comparison = true; it->getConfigInfo().getValue("BACKGROUND_COMPARISON", background_comparison); diff --git a/snapper/Snapper.cc b/snapper/Snapper.cc index 25858e7d..e5fc8c06 100644 --- a/snapper/Snapper.cc +++ b/snapper/Snapper.cc @@ -182,57 +182,47 @@ namespace snapper Snapshots::iterator - Snapper::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata) + Snapper::createSingleSnapshot(const SCD& scd) { - return snapshots.createSingleSnapshot(uid, description, cleanup, userdata); + return snapshots.createSingleSnapshot(scd); } Snapshots::iterator - Snapper::createSingleSnapshot(Snapshots::const_iterator parent, bool read_only, uid_t uid, - const string& description, const string& cleanup, - const map& userdata) + Snapper::createSingleSnapshot(Snapshots::const_iterator parent, const SCD& scd) { if (parent == snapshots.end()) throw IllegalSnapshotException(); - return snapshots.createSingleSnapshot(parent, read_only, uid, description, cleanup, - userdata); + return snapshots.createSingleSnapshot(parent, scd); } Snapshots::iterator - Snapper::createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description, - const string& cleanup, - const map& userdata) + Snapper::createSingleSnapshotOfDefault(const SCD& scd) { - return snapshots.createSingleSnapshotOfDefault(read_only, uid, description, cleanup, - userdata); + return snapshots.createSingleSnapshotOfDefault(scd); } Snapshots::iterator - Snapper::createPreSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata) + Snapper::createPreSnapshot(const SCD& scd) { - return snapshots.createPreSnapshot(uid, description, cleanup, userdata); + return snapshots.createPreSnapshot(scd); } Snapshots::iterator - Snapper::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description, - const string& cleanup, const map& userdata) + Snapper::createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd) { - return snapshots.createPostSnapshot(pre, uid, description, cleanup, userdata); + return snapshots.createPostSnapshot(pre, scd); } void - Snapper::modifySnapshot(Snapshots::iterator snapshot, const string& description, - const string& cleanup, const map& userdata) + Snapper::modifySnapshot(Snapshots::iterator snapshot, const SMD& smd) { - snapshots.modifySnapshot(snapshot, description, cleanup, userdata); + snapshots.modifySnapshot(snapshot, smd); } diff --git a/snapper/Snapper.h b/snapper/Snapper.h index c05640c3..cfb25d6f 100644 --- a/snapper/Snapper.h +++ b/snapper/Snapper.h @@ -125,26 +125,13 @@ namespace snapper Snapshots::const_iterator getSnapshotCurrent() const; + Snapshots::iterator createSingleSnapshot(const SCD& scd); + Snapshots::iterator createSingleSnapshot(Snapshots::const_iterator parent, const SCD& scd); + Snapshots::iterator createSingleSnapshotOfDefault(const SCD& scd); + Snapshots::iterator createPreSnapshot(const SCD& scd); + Snapshots::iterator createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd); - Snapshots::iterator createSingleSnapshot(uid_t uid, const string& description, - const string& cleanup, - const map& userdata); - Snapshots::iterator createSingleSnapshot(Snapshots::const_iterator parent, bool read_only, - uid_t uid, const string& description, - const string& cleanup, - const map& userdata); - Snapshots::iterator createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description, - const string& cleanup, - const map& userdata); - Snapshots::iterator createPreSnapshot(uid_t uid, const string& description, - const string& cleanup, - const map& userdata); - Snapshots::iterator createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, - const string& description, const string& cleanup, - const map& userdata); - - void modifySnapshot(Snapshots::iterator snapshot, const string& description, - const string& cleanup, const map& userdata); + void modifySnapshot(Snapshots::iterator snapshot, const SMD& smd); void deleteSnapshot(Snapshots::iterator snapshot); diff --git a/snapper/Snapshot.cc b/snapper/Snapshot.cc index c8be0102..41e37a96 100644 --- a/snapper/Snapshot.cc +++ b/snapper/Snapshot.cc @@ -533,89 +533,82 @@ namespace snapper Snapshots::iterator - Snapshots::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata) + Snapshots::createSingleSnapshot(const SCD& scd) { - checkUserdata(userdata); + checkUserdata(scd.userdata); Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL)); - snapshot.uid = uid; - snapshot.description = description; - snapshot.cleanup = cleanup; - snapshot.userdata = userdata; + snapshot.uid = scd.uid; + snapshot.description = scd.description; + snapshot.cleanup = scd.cleanup; + snapshot.userdata =scd. userdata; - return createHelper(snapshot, getSnapshotCurrent(), true); + return createHelper(snapshot, getSnapshotCurrent(), scd.read_only); } Snapshots::iterator - Snapshots::createSingleSnapshot(const_iterator parent, bool read_only, uid_t uid, - const string& description, const string& cleanup, - const map& userdata) + Snapshots::createSingleSnapshot(const_iterator parent, const SCD& scd) { - checkUserdata(userdata); + checkUserdata(scd.userdata); Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL)); - snapshot.uid = uid; - snapshot.description = description; - snapshot.cleanup = cleanup; - snapshot.userdata = userdata; + snapshot.uid = scd.uid; + snapshot.description = scd.description; + snapshot.cleanup = scd.cleanup; + snapshot.userdata = scd.userdata; - return createHelper(snapshot, parent, read_only); + return createHelper(snapshot, parent, scd.read_only); } Snapshots::iterator - Snapshots::createSingleSnapshotOfDefault(bool read_only, uid_t uid, - const string& description, const string& cleanup, - const map& userdata) + Snapshots::createSingleSnapshotOfDefault(const SCD& scd) { - checkUserdata(userdata); + checkUserdata(scd.userdata); Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL)); - snapshot.uid = uid; - snapshot.description = description; - snapshot.cleanup = cleanup; - snapshot.userdata = userdata; + snapshot.uid = scd.uid; + snapshot.description = scd.description; + snapshot.cleanup = scd.cleanup; + snapshot.userdata = scd.userdata; - return createHelper(snapshot, end(), read_only); + return createHelper(snapshot, end(), scd.read_only); } Snapshots::iterator - Snapshots::createPreSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata) + Snapshots::createPreSnapshot(const SCD& scd) { - checkUserdata(userdata); + checkUserdata(scd.userdata); Snapshot snapshot(snapper, PRE, nextNumber(), time(NULL)); - snapshot.uid = uid; - snapshot.description = description; - snapshot.cleanup = cleanup; - snapshot.userdata = userdata; + snapshot.uid = scd.uid; + snapshot.description = scd.description; + snapshot.cleanup = scd.cleanup; + snapshot.userdata = scd.userdata; - return createHelper(snapshot, getSnapshotCurrent(), true); + return createHelper(snapshot, getSnapshotCurrent(), scd.read_only); } Snapshots::iterator - Snapshots::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description, - const string& cleanup, const map& userdata) + Snapshots::createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd) { if (pre == entries.end() || pre->isCurrent() || pre->getType() != PRE || findPost(pre) != entries.end()) throw IllegalSnapshotException(); - checkUserdata(userdata); + checkUserdata(scd.userdata); Snapshot snapshot(snapper, POST, nextNumber(), time(NULL)); snapshot.pre_num = pre->getNum(); - snapshot.uid = uid; - snapshot.description = description; - snapshot.cleanup = cleanup; - snapshot.userdata = userdata; + snapshot.uid = scd.uid; + snapshot.description = scd.description; + snapshot.cleanup = scd.cleanup; + snapshot.userdata = scd.userdata; - return createHelper(snapshot, getSnapshotCurrent(), true); + return createHelper(snapshot, getSnapshotCurrent(), scd.read_only); } @@ -665,17 +658,16 @@ namespace snapper void - Snapshots::modifySnapshot(iterator snapshot, const string& description, const string& cleanup, - const map& userdata) + Snapshots::modifySnapshot(iterator snapshot, const SMD& smd) { if (snapshot == entries.end() || snapshot->isCurrent()) throw IllegalSnapshotException(); - checkUserdata(userdata); + checkUserdata(smd.userdata); - snapshot->description = description; - snapshot->cleanup = cleanup; - snapshot->userdata = userdata; + snapshot->description = smd.description; + snapshot->cleanup = smd.cleanup; + snapshot->userdata = smd.userdata; snapshot->writeInfo(); diff --git a/snapper/Snapshot.h b/snapper/Snapshot.h index 995da564..e95be7c5 100644 --- a/snapper/Snapshot.h +++ b/snapper/Snapshot.h @@ -130,9 +130,7 @@ namespace snapper unsigned int pre_num; // valid only for type=POST string description; // likely empty for type=POST - string cleanup; - map userdata; mutable bool mount_checked; @@ -154,6 +152,32 @@ namespace snapper } + // Snapshot Modify Data + class SMD + { + public: + + SMD() : description(), cleanup(), userdata({}) {} + + string description; + string cleanup; + map userdata; + + }; + + // Snapshot Create Data + class SCD : public SMD + { + public: + + SCD() : SMD(), read_only(true), uid(0) {} + + bool read_only; + uid_t uid; + + }; + + class Snapshots { public: @@ -195,23 +219,15 @@ namespace snapper void checkUserdata(const map& userdata) const; - iterator createSingleSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata); - iterator createSingleSnapshot(const_iterator parent, bool read_only, uid_t uid, - const string& description, const string& cleanup, - const map& userdata); - iterator createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description, - const string& cleanup, - const map& userdata); - iterator createPreSnapshot(uid_t uid, const string& description, const string& cleanup, - const map& userdata); - iterator createPostSnapshot(const_iterator pre, uid_t uid, const string& description, - const string& cleanup, const map& userdata); + iterator createSingleSnapshot(const SCD& scd); + iterator createSingleSnapshot(const_iterator parent, const SCD& scd); + iterator createSingleSnapshotOfDefault(const SCD& scd); + iterator createPreSnapshot(const SCD& scd); + iterator createPostSnapshot(const_iterator pre, const SCD& scd); iterator createHelper(Snapshot& snapshot, const_iterator parent, bool read_only); - void modifySnapshot(iterator snapshot, const string& description, const string& cleanup, - const map& userdata); + void modifySnapshot(iterator snapshot, const SMD& smd); void deleteSnapshot(iterator snapshot); diff --git a/testsuite-real/common.cc b/testsuite-real/common.cc index 885eae33..05fc8f79 100644 --- a/testsuite-real/common.cc +++ b/testsuite-real/common.cc @@ -48,14 +48,22 @@ cleanup() void first_snapshot() { - first = sh->createPreSnapshot(0, CONFIG, "number", map()); + SCD scd; + scd.description = CONFIG; + scd.cleanup = "number"; + + first = sh->createPreSnapshot(scd); } void second_snapshot() { - second = sh->createPostSnapshot(first, 0, CONFIG, "number", map()); + SCD scd; + scd.description = CONFIG; + scd.cleanup = "number"; + + second = sh->createPostSnapshot(first, scd); }