This commit is contained in:
andrew (from workstation) 2020-05-15 17:10:46 +02:00
parent 82c8e4061b
commit 9a29fa6a3b
3 changed files with 12 additions and 2 deletions

View File

@ -5026,6 +5026,7 @@ void Td::on_request(uint64 id, td_api::optimizeStorage &request) {
web_pages_manager_->memory_cleanup(); web_pages_manager_->memory_cleanup();
stickers_manager_->memory_cleanup(); stickers_manager_->memory_cleanup();
documents_manager_->memory_cleanup(); documents_manager_->memory_cleanup();
file_manager_->memory_cleanup();
std::vector<FileType> file_types; std::vector<FileType> file_types;
for (auto &file_type : request.file_types_) { for (auto &file_type : request.file_types_) {

View File

@ -3187,6 +3187,7 @@ FileId FileManager::next_file_id() {
empty_file_ids_.pop_back(); empty_file_ids_.pop_back();
return FileId{res, 0}; return FileId{res, 0};
} }
FileId res(static_cast<int32>(file_id_info_.size()), 0); FileId res(static_cast<int32>(file_id_info_.size()), 0);
// LOG(ERROR) << "NEXT file_id " << res; // LOG(ERROR) << "NEXT file_id " << res;
file_id_info_.push_back({}); file_id_info_.push_back({});
@ -3694,8 +3695,15 @@ void FileManager::hangup() {
stop(); stop();
} }
void FileManager::memory_cleanup() {
empty_file_ids_.clear();
for (unsigned int i = 1; i < file_id_info_.size() - 1000; ++i) {
empty_file_ids_.push_back(i);
}
}
void FileManager::tear_down() { void FileManager::tear_down() {
parent_.reset(); parent_.reset();
} }
} // namespace td } // namespace td

View File

@ -145,7 +145,6 @@ class FileNode {
FileEncryptionKey encryption_key_; FileEncryptionKey encryption_key_;
FileDbId pmc_id_; FileDbId pmc_id_;
std::vector<FileId> file_ids_; std::vector<FileId> file_ids_;
FileId main_file_id_; FileId main_file_id_;
double last_successful_force_reupload_time_ = -1e10; double last_successful_force_reupload_time_ = -1e10;
@ -327,6 +326,8 @@ class FileView {
class FileManager : public FileLoadManager::Callback { class FileManager : public FileLoadManager::Callback {
public: public:
void memory_cleanup();
class DownloadCallback { class DownloadCallback {
public: public:
DownloadCallback() = default; DownloadCallback() = default;