Files
NXST/include/nxst/domain/transfer_state.hpp
T
DragonSpirit d9077b8fc1
CI / Build NRO (push) Has been cancelled
CI / Upload release asset (push) Has been cancelled
CI / Format check (push) Has been cancelled
CI / Layering check (push) Has been cancelled
finish refactor, add docs and CI
2026-04-27 02:34:12 +03:00

43 lines
1.0 KiB
C++

#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;
}
};