From ddbca1bb16d385afc943a08b5bcde577f6ca0f83 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 28 Jul 2022 17:34:29 +0300 Subject: [PATCH] Use different resource limit for upload and download connections. --- td/telegram/files/FileLoadManager.cpp | 15 ++++++++------- td/telegram/files/FileLoadManager.h | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/td/telegram/files/FileLoadManager.cpp b/td/telegram/files/FileLoadManager.cpp index 1662f99b0..ff291a1d9 100644 --- a/td/telegram/files/FileLoadManager.cpp +++ b/td/telegram/files/FileLoadManager.cpp @@ -24,21 +24,22 @@ FileLoadManager::FileLoadManager(ActorShared callback, ActorShared<> p } void FileLoadManager::start_up() { - if (G()->shared_config().get_option_boolean("is_premium")) { - max_resource_limit_ *= 8; - } - upload_resource_manager_ = create_actor("UploadResourceManager", max_resource_limit_, + constexpr int64 MAX_UPLOAD_RESOURCE_LIMIT = 4 << 20; + upload_resource_manager_ = create_actor("UploadResourceManager", MAX_UPLOAD_RESOURCE_LIMIT, !G()->parameters().use_file_db /*tdlib_engine*/ ? ResourceManager::Mode::Greedy : ResourceManager::Mode::Baseline); + if (G()->shared_config().get_option_boolean("is_premium")) { + max_download_resource_limit_ *= 8; + } } ActorOwn &FileLoadManager::get_download_resource_manager(bool is_small, DcId dc_id) { auto &actor = is_small ? download_small_resource_manager_map_[dc_id] : download_resource_manager_map_[dc_id]; if (actor.empty()) { actor = create_actor( - PSLICE() << "DownloadResourceManager " << tag("is_small", is_small) << tag("dc_id", dc_id), max_resource_limit_, - ResourceManager::Mode::Baseline); + PSLICE() << "DownloadResourceManager " << tag("is_small", is_small) << tag("dc_id", dc_id), + max_download_resource_limit_, ResourceManager::Mode::Baseline); } return actor; } @@ -185,7 +186,7 @@ void FileLoadManager::update_downloaded_part(QueryId id, int64 offset, int64 lim if (node == nullptr) { return; } - send_closure(node->loader_, &FileLoaderActor::update_downloaded_part, offset, limit, max_resource_limit_); + send_closure(node->loader_, &FileLoaderActor::update_downloaded_part, offset, limit, max_download_resource_limit_); } void FileLoadManager::hangup() { diff --git a/td/telegram/files/FileLoadManager.h b/td/telegram/files/FileLoadManager.h index 9192c0cc2..43ab076ae 100644 --- a/td/telegram/files/FileLoadManager.h +++ b/td/telegram/files/FileLoadManager.h @@ -80,7 +80,7 @@ class FileLoadManager final : public Actor { ActorShared callback_; ActorShared<> parent_; std::map query_id_to_node_id_; - int64 max_resource_limit_ = 1 << 21; + int64 max_download_resource_limit_ = 1 << 21; bool stop_flag_ = false; void start_up() final;