diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index 29adb0de4..2feeb1a8a 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -1248,7 +1248,7 @@ Result FileManager::register_file(FileData &&data, FileLocationSource fi FileView file_view(get_file_node(file_id)); - std::vector to_merge; + vector 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(), create_callback(), + send_closure(G()->file_manager(), &FileManager::resume_upload, file_id_, vector(), 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 bad_parts, std::shared_ptr callback, +void FileManager::resume_upload(FileId file_id, vector bad_parts, std::shared_ptr 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()); + run_upload(node, vector()); 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 bad_parts) { +void FileManager::run_upload(FileNodePtr node, vector 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 bad_parts) { void FileManager::upload(FileId file_id, std::shared_ptr callback, int32 new_priority, uint64 upload_order) { - return resume_upload(file_id, std::vector(), std::move(callback), new_priority, upload_order); + return resume_upload(file_id, vector(), std::move(callback), new_priority, upload_order); } void FileManager::cancel_upload(FileId file_id) { - return resume_upload(file_id, std::vector(), nullptr, 0, 0); + return resume_upload(file_id, vector(), nullptr, 0, 0); } static bool is_background_type(FileType type) { diff --git a/td/telegram/files/FileManager.h b/td/telegram/files/FileManager.h index 13ad50dc3..1d6ef347d 100644 --- a/td/telegram/files/FileManager.h +++ b/td/telegram/files/FileManager.h @@ -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 #include @@ -150,7 +151,7 @@ class FileNode { DialogId owner_dialog_id_; FileEncryptionKey encryption_key_; FileDbId pmc_id_; - std::vector file_ids_; + vector file_ids_; FileId main_file_id_; @@ -588,9 +589,9 @@ class FileManager final : public FileLoadManager::Callback { std::map generate_location_to_file_id_; std::map pmc_id_to_file_node_id_; - vector file_id_info_; - vector empty_file_ids_; - vector> file_nodes_; + WaitFreeVector file_id_info_; + WaitFreeVector empty_file_ids_; + WaitFreeVector> file_nodes_; ActorOwn file_load_manager_; ActorOwn 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 bad_parts); + void run_upload(FileNodePtr node, vector bad_parts); void run_download(FileNodePtr node, bool force_update_priority); void run_generate(FileNodePtr node);