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)); 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 register_location = [&](const auto &location, auto &mp) {
auto &other_id = mp[location]; auto &other_id = mp[location];
if (other_id.empty()) { if (other_id.empty()) {
@ -2512,7 +2512,7 @@ class FileManager::ForceUploadActor final : public Actor {
is_active_ = true; is_active_ = true;
attempt_++; 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_); 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) { int32 new_priority, uint64 upload_order, bool force, bool prefer_small) {
auto node = get_sync_file_node(file_id); auto node = get_sync_file_node(file_id);
if (!node) { if (!node) {
@ -2642,7 +2642,7 @@ bool FileManager::delete_partial_remote_location(FileId file_id) {
return false; return false;
} }
run_upload(node, std::vector<int>()); run_upload(node, vector<int>());
try_flush_node(node, "delete_partial_remote_location"); try_flush_node(node, "delete_partial_remote_location");
return true; return true;
} }
@ -2767,7 +2767,7 @@ void FileManager::run_generate(FileNodePtr node) {
LOG(INFO) << "File " << file_id << " generate request has sent to FileGenerateManager"; 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; int8 priority = 0;
FileId file_id = node->main_file_id_; FileId file_id = node->main_file_id_;
for (auto id : node->file_ids_) { 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, void FileManager::upload(FileId file_id, std::shared_ptr<UploadCallback> callback, int32 new_priority,
uint64 upload_order) { 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) { 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) { static bool is_background_type(FileType type) {

View File

@ -34,6 +34,7 @@
#include "td/utils/Slice.h" #include "td/utils/Slice.h"
#include "td/utils/Status.h" #include "td/utils/Status.h"
#include "td/utils/StringBuilder.h" #include "td/utils/StringBuilder.h"
#include "td/utils/WaitFreeVector.h"
#include <map> #include <map>
#include <memory> #include <memory>
@ -150,7 +151,7 @@ class FileNode {
DialogId owner_dialog_id_; DialogId owner_dialog_id_;
FileEncryptionKey encryption_key_; FileEncryptionKey encryption_key_;
FileDbId pmc_id_; FileDbId pmc_id_;
std::vector<FileId> file_ids_; vector<FileId> file_ids_;
FileId main_file_id_; 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<FullGenerateFileLocation, FileId> generate_location_to_file_id_;
std::map<FileDbId, int32> pmc_id_to_file_node_id_; std::map<FileDbId, int32> pmc_id_to_file_node_id_;
vector<FileIdInfo> file_id_info_; WaitFreeVector<FileIdInfo> file_id_info_;
vector<int32> empty_file_ids_; WaitFreeVector<int32> empty_file_ids_;
vector<unique_ptr<FileNode>> file_nodes_; WaitFreeVector<unique_ptr<FileNode>> file_nodes_;
ActorOwn<FileLoadManager> file_load_manager_; ActorOwn<FileLoadManager> file_load_manager_;
ActorOwn<FileGenerateManager> file_generate_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_download(FileNodePtr node);
void do_cancel_upload(FileNodePtr node); void do_cancel_upload(FileNodePtr node);
void do_cancel_generate(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_download(FileNodePtr node, bool force_update_priority);
void run_generate(FileNodePtr node); void run_generate(FileNodePtr node);