if (files_transfer_thread.joinable())
files_transfer_thread.join();
- for (list<Comparison*>::iterator it = comparisons.begin(); it != comparisons.end(); ++it)
+ for (Comparison& comparison : comparisons)
{
- delete_comparison(it);
+ delete_comparison(comparison);
}
for (map<pair<string, unsigned int>, unsigned int>::iterator it1 = mounts.begin();
}
-list<Comparison*>::iterator
+list<Comparison>::iterator
Client::find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1,
Snapshots::const_iterator snapshot2)
{
- for (list<Comparison*>::iterator it = comparisons.begin(); it != comparisons.end(); ++it)
+ for (list<Comparison>::iterator it = comparisons.begin(); it != comparisons.end(); ++it)
{
- if ((*it)->getSnapper() == snapper && (*it)->getSnapshot1() == snapshot1 &&
- (*it)->getSnapshot2() == snapshot2)
+ if (it->getSnapper() == snapper && it->getSnapshot1() == snapshot1 &&
+ it->getSnapshot2() == snapshot2)
return it;
}
}
-list<Comparison*>::iterator
+list<Comparison>::iterator
Client::find_comparison(Snapper* snapper, unsigned int number1, unsigned int number2)
{
Snapshots& snapshots = snapper->getSnapshots();
void
-Client::delete_comparison(list<Comparison*>::iterator it)
+Client::delete_comparison(Comparison& comparison)
{
- const Snapper* s = (*it)->getSnapper();
+ // TODO: function name is misleading
- for (MetaSnappers::iterator it2 = meta_snappers.begin(); it2 != meta_snappers.end(); ++it2)
+ // TODO: a class MetaComparison with integrated RefCounter would be cool to avoid this
+ // function entirely
+
+ const Snapper* snapper = comparison.getSnapper();
+
+ for (MetaSnapper& meta_snapper : meta_snappers)
{
- if (it2->is_equal(s))
- it2->dec_use_count();
+ if (meta_snapper.is_equal(snapper))
+ meta_snapper.dec_use_count();
}
-
- delete *it;
- *it = nullptr;
}
lock.unlock();
- Comparison* comparison = new Comparison(snapper, snapshot1, snapshot2, false);
- dbus_uint32_t num_files = comparison->getFiles().size();
+ Comparison comparison(snapper, snapshot1, snapshot2, false);
+ dbus_uint32_t num_files = comparison.getFiles().size();
lock.lock();
- comparisons.push_back(comparison);
+ comparisons.push_back(std::move(comparison));
it->inc_use_count();
check_permission(conn, msg, *it);
- list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- delete_comparison(it2);
+ delete_comparison(*it2);
comparisons.erase(it2);
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg, *it);
- list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- const Files& files = (*it2)->getFiles();
+ const Files& files = it2->getFiles();
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg, *it);
- list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- const Files& files = (*it2)->getFiles();
+ const Files& files = it2->getFiles();
DBus::MessageMethodReturn reply(msg);
/*
* Copyright (c) [2012-2015] Novell, Inc.
- * Copyright (c) [2016-2024] SUSE LLC
+ * Copyright (c) [2016-2025] SUSE LLC
*
* All Rights Reserved.
*
Client(const string& name, uid_t uid, const Clients& clients);
~Client();
- list<Comparison*>::iterator find_comparison(Snapper* snapper, unsigned int number1,
- unsigned int number2);
+ list<Comparison>::iterator find_comparison(Snapper* snapper, unsigned int number1,
+ unsigned int number2);
- list<Comparison*>::iterator find_comparison(Snapper* snapper,
- Snapshots::const_iterator snapshot1,
- Snapshots::const_iterator snapshot2);
+ list<Comparison>::iterator find_comparison(Snapper* snapper,
+ Snapshots::const_iterator snapshot1,
+ Snapshots::const_iterator snapshot2);
- void delete_comparison(list<Comparison*>::iterator);
+ void delete_comparison(Comparison& comparison);
void add_lock(const string& config_name);
void remove_lock(const string& config_name);
const string name;
const uid_t uid;
- list<Comparison*> comparisons;
+ list<Comparison> comparisons;
map<string, unsigned int> locks;