Use WaitFreeVector in FileManager.
This commit is contained in:
parent
2d705004a3
commit
90b04eb3b6
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user