Skip to content
API Documentation
BastionGuard™
RecoveryWorker Class Reference

#include <recovery_worker.hpp>

Public Types

using CompletionCallback = std::function<void(const RecoveryResult&)>

Public Member Functions

 RecoveryWorker ()
 ~RecoveryWorker ()
void start (const ScanReport &report, const std::string &output_dir, const std::vector< size_t > &selected_result_indices, CompletionCallback cb)
bool running () const
void join ()
void request_cancel ()

Public Attributes

std::atomic< bool > cancel_requested_ {false}

Private Attributes

std::atomic< bool > running_ {false}
std::thread thread_

Detailed Description

Definition at line 19 of file recovery_worker.hpp.

Member Typedef Documentation

◆ CompletionCallback

using RecoveryWorker::CompletionCallback = std::function<void(const RecoveryResult&)>

Definition at line 21 of file recovery_worker.hpp.

Constructor & Destructor Documentation

◆ RecoveryWorker()

RecoveryWorker::RecoveryWorker ( )
default

References join(), RecoveryWorker(), running(), and start().

Referenced by RecoveryWorker().

◆ ~RecoveryWorker()

RecoveryWorker::~RecoveryWorker ( )

Definition at line 6 of file recovery_worker.cpp.

7{
9 join();
10}

References join(), and request_cancel().

Member Function Documentation

◆ join()

void RecoveryWorker::join ( )

Definition at line 62 of file recovery_worker.cpp.

63{
64 if (thread_.joinable())
65 thread_.join();
66}
std::thread thread_

References thread_.

Referenced by RecoveryWorker(), and ~RecoveryWorker().

◆ request_cancel()

void RecoveryWorker::request_cancel ( )

Definition at line 68 of file recovery_worker.cpp.

69{
70 cancel_requested_ = true;
71}
std::atomic< bool > cancel_requested_

References cancel_requested_.

Referenced by ~RecoveryWorker().

◆ running()

bool RecoveryWorker::running ( ) const

◆ start()

void RecoveryWorker::start ( const ScanReport & report,
const std::string & output_dir,
const std::vector< size_t > & selected_result_indices,
CompletionCallback cb )

Definition at line 12 of file recovery_worker.cpp.

16{
17 if (running_)
18 return;
19
20 cancel_requested_ = false;
21 running_ = true;
22
23 thread_ = std::thread([this, report, output_dir, selected_result_indices, cb]()
24 {
25 RecoveryResult rr;
26
27 try
28 {
30 report,
31 output_dir,
32 selected_result_indices,
33 rr.summary,
34 rr.logs,
35 rr.error,
36 [this]() { return cancel_requested_.load(); }
37 );
38 }
39 catch (const std::exception& e)
40 {
41 rr.ok = false;
42 rr.error = std::string("Recovery exception: ") + e.what();
43 }
44 catch (...)
45 {
46 rr.ok = false;
47 rr.error = "Unknown recovery exception";
48 }
49
50 running_ = false;
51
52 if (!cancel_requested_ && cb)
53 cb(rr);
54 });
55}
static bool export_results_and_carve(const ScanReport &report, const std::string &output_dir, const std::vector< size_t > &selected_result_indices, RecoverySummary &summary, std::vector< std::string > &logs, std::string &error, CancelCallback cancel_cb)
RecoverySummary summary
std::vector< std::string > logs

References cancel_requested_, RecoveryResult::error, RecoveryExporter::export_results_and_carve(), RecoveryResult::logs, RecoveryResult::ok, running_, RecoveryResult::summary, and thread_.

Referenced by AppWindow::on_output_folder_chosen(), MainWindow::on_recover_now(), and RecoveryWorker().

Member Data Documentation

◆ cancel_requested_

std::atomic<bool> RecoveryWorker::cancel_requested_ {false}

Definition at line 32 of file recovery_worker.hpp.

Referenced by request_cancel(), and start().

◆ running_

std::atomic<bool> RecoveryWorker::running_ {false}
private

Definition at line 36 of file recovery_worker.hpp.

Referenced by running(), and start().

◆ thread_

std::thread RecoveryWorker::thread_
private

Definition at line 37 of file recovery_worker.hpp.

Referenced by join(), and start().


The documentation for this class was generated from the following files: