urbackup_backend/urbackupserver/ServerDownloadThreadGroup.h

70 lines
2.6 KiB
C++

#pragma once
#include "ServerDownloadThread.h"
class ServerDownloadThreadGroup
{
public:
ServerDownloadThreadGroup(FileClient& fc, FileClientChunked* fc_chunked, const std::string& backuppath, const std::string& backuppath_hashes, const std::string& last_backuppath, const std::string& last_backuppath_complete, bool hashed_transfer, bool save_incomplete_file, int clientid,
const std::string& clientname, const std::string& clientsubname,
bool use_tmpfiles, const std::string& tmpfile_path, const std::string& server_token, bool use_reflink, int backupid, bool r_incremental, IPipe* hashpipe_prepare, ClientMain* client_main,
int filesrv_protocol_version, int incremental_num, logid_t logid, bool with_hashes, const std::vector<std::string>& shares_without_snapshot,
bool with_sparse_hashing, server::FileMetadataDownloadThread* file_metadata_download, bool sc_failure_fatal, size_t n_threads, ServerSettings* server_settings, bool intra_file_diffs,
FilePathCorrections& filepath_corrections, MaxFileId& max_file_id);
~ServerDownloadThreadGroup();
void queueSkip();
bool sleepQueue();
bool isOffline();
void addToQueueStartShadowcopy(const std::string& fn);
void addToQueueStopShadowcopy(const std::string& fn);
void queueStop();
void addToQueueFull(size_t id, const std::string& fn, const std::string& short_fn, const std::string& curr_path, const std::string& os_path,
_i64 predicted_filesize, const FileMetadata& metadata, bool is_script, bool metadata_only, size_t folder_items, const std::string& sha_dig,
bool at_front_postpone_quitstop = false, unsigned int p_script_random = 0, std::string display_fn = std::string(), bool write_metadata = false);
void addToQueueChunked(size_t id, const std::string& fn, const std::string& short_fn, const std::string& curr_path,
const std::string& os_path, _i64 predicted_filesize, const FileMetadata& metadata, bool is_script, const std::string& sha_dig, unsigned int p_script_random = 0, std::string display_fn = std::string());
size_t getNumIssues();
bool getHasDiskError();
bool hasTimeout();
bool shouldBackoff();
size_t getNumEmbeddedMetadataFiles();
bool deleteTempFolder();
bool isDownloadOk(size_t id);
bool isDownloadPartial(size_t id);
size_t getMaxOkId();
bool join(int waitms);
private:
ServerDownloadThread* getMinQueued();
ServerDownloadThread::ActiveDlIds active_dls_ids;
struct ServerDlThread
{
ServerDownloadThread* dl_thread;
FileClient* fc;
FileClientChunked* fc_chunked;
};
std::vector<ServerDlThread> dl_threads;
std::vector<THREADPOOL_TICKET> tickets;
};