refactoring
Co-authored-by: n.fedorov <mail@nfedorov.dev> Co-committed-by: n.fedorov <mail@nfedorov.dev>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
#include <atomic>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
|
||||
struct TransferState {
|
||||
std::atomic<bool> done{false};
|
||||
std::atomic<bool> cancelled{false};
|
||||
std::atomic<bool> connection_failed{false};
|
||||
std::atomic<uint64_t> bytes_done{0};
|
||||
std::atomic<uint64_t> bytes_total{0};
|
||||
|
||||
std::string status;
|
||||
std::string fail_reason;
|
||||
mutable std::mutex status_mutex;
|
||||
|
||||
void reset() {
|
||||
done = false;
|
||||
cancelled = false;
|
||||
connection_failed = false;
|
||||
bytes_done = 0;
|
||||
bytes_total = 0;
|
||||
fail_reason.clear();
|
||||
std::lock_guard<std::mutex> lock(status_mutex);
|
||||
status.clear();
|
||||
}
|
||||
|
||||
double progress() const {
|
||||
uint64_t t = bytes_total.load();
|
||||
return t ? (double)bytes_done.load() / (double)t * 100.0 : 0.0;
|
||||
}
|
||||
|
||||
std::string getStatus() const {
|
||||
std::lock_guard<std::mutex> lock(status_mutex);
|
||||
return status;
|
||||
}
|
||||
|
||||
void setStatus(const std::string& s) {
|
||||
std::lock_guard<std::mutex> lock(status_mutex);
|
||||
status = s;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user