Skip to content

Commit

Permalink
[virtual machine] changed load_snapshots_common function to variadic …
Browse files Browse the repository at this point in the history
…template for better readability.
  • Loading branch information
georgeliao committed Nov 27, 2023
1 parent aeafe34 commit 710290c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 10 deletions.
14 changes: 5 additions & 9 deletions src/platform/backends/shared/base_virtual_machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,8 @@ void BaseVirtualMachine::delete_snapshot(const std::string& name)
mpl::log(mpl::Level::debug, vm_name, fmt::format("Snapshot deleted: {}", name));
}

void BaseVirtualMachine::load_snapshots_common(const std::function<void(const QString&)>& load_one_snapshot_function)
template <typename... Args>
void BaseVirtualMachine::load_snapshots_common(Args&&... args)
{
const std::unique_lock lock{snapshot_mutex};

Expand All @@ -359,26 +360,21 @@ void BaseVirtualMachine::load_snapshots_common(const std::function<void(const QS
QDir::Filter::Files | QDir::Filter::Readable,
QDir::SortFlag::Name);
for (const auto& finfo : snapshot_files)
load_one_snapshot_function(finfo.filePath());
load_snapshot_and_optionally_update_unique_identifiers(finfo.filePath(), std::forward<Args>(args)...);

load_generic_snapshot_info();
}

void BaseVirtualMachine::load_snapshots()
{
load_snapshots_common([this](const QString& file_path) -> void {
load_snapshot_and_optionally_update_unique_identifiers(file_path);
});
load_snapshots_common();
}

void BaseVirtualMachine::load_snapshots_and_update_unique_identifiers(const VMSpecs& src_specs,
const VMSpecs& dest_specs,
const std::string& src_vm_name)
{

load_snapshots_common([this, &src_specs, &dest_specs, &src_vm_name](const QString& file_path) -> void {
load_snapshot_and_optionally_update_unique_identifiers(file_path, src_specs, dest_specs, src_vm_name);
});
load_snapshots_common(src_specs, dest_specs, src_vm_name);
}

std::vector<std::string> BaseVirtualMachine::get_childrens_names(const Snapshot* parent) const
Expand Down
3 changes: 2 additions & 1 deletion src/platform/backends/shared/base_virtual_machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ class BaseVirtualMachine : public VirtualMachine
private:
using SnapshotMap = std::unordered_map<std::string, std::shared_ptr<Snapshot>>;

void load_snapshots_common(const std::function<void(const QString&)>& load_function);
template <typename... Args>
void load_snapshots_common(Args&&... args);
template <typename LockT>
void log_latest_snapshot(LockT lock) const;

Expand Down

0 comments on commit 710290c

Please sign in to comment.