Use WaitFreeVector in FileManager.

This commit is contained in:
levlam 2022-08-02 14:45:22 +03:00
parent 2d705004a3
commit 90b04eb3b6
2 changed files with 13 additions and 12 deletions

View File

@ -1248,7 +1248,7 @@ Result<FileId> FileManager::register_file(FileData &&data, FileLocationSource fi
FileView file_view(get_file_node(file_id));
std::vector<FileId> to_merge;
vector<FileId> to_merge;
auto register_location = [&](const auto &location, auto &mp) {
auto &other_id = mp[location];
if (other_id.empty()) {
@ -2512,7 +2512,7 @@ class FileManager::ForceUploadActor final : public Actor {
is_active_ = true;
attempt_++;
send_closure(G()->file_manager(), &FileManager::resume_upload, file_id_, std::vector<int>(), create_callback(),
send_closure(G()->file_manager(), &FileManager::resume_upload, file_id_, vector<int>(), create_callback(),
new_priority_, upload_order_, attempt_ == 2, prefer_small_);
}
@ -2531,7 +2531,7 @@ void FileManager::on_force_reupload_success(FileId file_id) {
}
}
void FileManager::resume_upload(FileId file_id, std::vector<int> bad_parts, std::shared_ptr<UploadCallback> callback,
void FileManager::resume_upload(FileId file_id, vector<int> bad_parts, std::shared_ptr<UploadCallback> callback,
int32 new_priority, uint64 upload_order, bool force, bool prefer_small) {
auto node = get_sync_file_node(file_id);
if (!node) {
@ -2642,7 +2642,7 @@ bool FileManager::delete_partial_remote_location(FileId file_id) {
return false;
}
run_upload(node, std::vector<int>());
run_upload(node, vector<int>());
try_flush_node(node, "delete_partial_remote_location");
return true;
}
@ -2767,7 +2767,7 @@ void FileManager::run_generate(FileNodePtr node) {
LOG(INFO) << "File " << file_id << " generate request has sent to FileGenerateManager";
}
void FileManager::run_upload(FileNodePtr node, std::vector<int> bad_parts) {
void FileManager::run_upload(FileNodePtr node, vector<int> bad_parts) {
int8 priority = 0;
FileId file_id = node->main_file_id_;
for (auto id : node->file_ids_) {
@ -2884,11 +2884,11 @@ void FileManager::run_upload(FileNodePtr node, std::vector<int> bad_parts) {
void FileManager::upload(FileId file_id, std::shared_ptr<UploadCallback> callback, int32 new_priority,
uint64 upload_order) {
return resume_upload(file_id, std::vector<int>(), std::move(callback), new_priority, upload_order);
return resume_upload(file_id, vector<int>(), std::move(callback), new_priority, upload_order);
}
void FileManager::cancel_upload(FileId file_id) {
return resume_upload(file_id, std::vector<int>(), nullptr, 0, 0);
return resume_upload(file_id, vector<int>(), nullptr, 0, 0);
}
static bool is_background_type(FileType type) {

View File

@ -34,6 +34,7 @@
#include "td/utils/Slice.h"
#include "td/utils/Status.h"
#include "td/utils/StringBuilder.h"
#include "td/utils/WaitFreeVector.h"
#include <map>
#include <memory>
@ -150,7 +151,7 @@ class FileNode {
DialogId owner_dialog_id_;
FileEncryptionKey encryption_key_;
FileDbId pmc_id_;
std::vector<FileId> file_ids_;
vector<FileId> file_ids_;
FileId main_file_id_;
@ -588,9 +589,9 @@ class FileManager final : public FileLoadManager::Callback {
std::map<FullGenerateFileLocation, FileId> generate_location_to_file_id_;
std::map<FileDbId, int32> pmc_id_to_file_node_id_;
vector<FileIdInfo> file_id_info_;
vector<int32> empty_file_ids_;
vector<unique_ptr<FileNode>> file_nodes_;
WaitFreeVector<FileIdInfo> file_id_info_;
WaitFreeVector<int32> empty_file_ids_;
WaitFreeVector<unique_ptr<FileNode>> file_nodes_;
ActorOwn<FileLoadManager> file_load_manager_;
ActorOwn<FileGenerateManager> file_generate_manager_;
@ -649,7 +650,7 @@ class FileManager final : public FileLoadManager::Callback {
void do_cancel_download(FileNodePtr node);
void do_cancel_upload(FileNodePtr node);
void do_cancel_generate(FileNodePtr node);
void run_upload(FileNodePtr node, std::vector<int> bad_parts);
void run_upload(FileNodePtr node, vector<int> bad_parts);
void run_download(FileNodePtr node, bool force_update_priority);
void run_generate(FileNodePtr node);