From 216b6e1acfdd624d7f6f691e99ed8fa69359e9e9 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 3 Feb 2023 10:41:31 +0300 Subject: [PATCH] Add AutosaveManager. --- CMakeLists.txt | 2 ++ SplitSource.php | 1 + td/telegram/AutosaveManager.cpp | 20 ++++++++++++++++++++ td/telegram/AutosaveManager.h | 28 ++++++++++++++++++++++++++++ td/telegram/Global.h | 9 +++++++++ td/telegram/Td.cpp | 8 ++++++++ td/telegram/Td.h | 3 +++ 7 files changed, 71 insertions(+) create mode 100644 td/telegram/AutosaveManager.cpp create mode 100644 td/telegram/AutosaveManager.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ef6c7bd71..4ac63e67e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -289,6 +289,7 @@ set(TDLIB_SOURCE td/telegram/AudiosManager.cpp td/telegram/AuthManager.cpp td/telegram/AutoDownloadSettings.cpp + td/telegram/AutosaveManager.cpp td/telegram/BackgroundManager.cpp td/telegram/BackgroundType.cpp td/telegram/BotCommand.cpp @@ -513,6 +514,7 @@ set(TDLIB_SOURCE td/telegram/AudiosManager.h td/telegram/AuthManager.h td/telegram/AutoDownloadSettings.h + td/telegram/AutosaveManager.h td/telegram/BackgroundId.h td/telegram/BackgroundManager.h td/telegram/BackgroundType.h diff --git a/SplitSource.php b/SplitSource.php index 2795ae9f7..c7263b139 100644 --- a/SplitSource.php +++ b/SplitSource.php @@ -280,6 +280,7 @@ function split_file($file, $chunks, $undo) { 'attach_menu_manager[_(-][^.]|AttachMenuManager[^;>]' => "AttachMenuManager", 'audios_manager[_(-][^.]|AudiosManager' => "AudiosManager", 'auth_manager[_(-][^.]|AuthManager' => 'AuthManager', + 'autosave_manager[_(-][^.]|AutosaveManager' => 'AutosaveManager', 'background_manager[_(-][^.]|BackgroundManager' => "BackgroundManager", 'contacts_manager[_(-][^.]|ContactsManager([^ ;.]| [^*])' => 'ContactsManager', 'country_info_manager[_(-][^.]|CountryInfoManager' => 'CountryInfoManager', diff --git a/td/telegram/AutosaveManager.cpp b/td/telegram/AutosaveManager.cpp new file mode 100644 index 000000000..fdae9165b --- /dev/null +++ b/td/telegram/AutosaveManager.cpp @@ -0,0 +1,20 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#include "td/telegram/AutosaveManager.h" + +#include "td/telegram/Td.h" + +namespace td { + +AutosaveManager::AutosaveManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) { +} + +void AutosaveManager::tear_down() { + parent_.reset(); +} + +} // namespace td diff --git a/td/telegram/AutosaveManager.h b/td/telegram/AutosaveManager.h new file mode 100644 index 000000000..57a92bcc8 --- /dev/null +++ b/td/telegram/AutosaveManager.h @@ -0,0 +1,28 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#pragma once + +#include "td/actor/actor.h" + +#include "td/utils/common.h" + +namespace td { + +class Td; + +class AutosaveManager final : public Actor { + public: + AutosaveManager(Td *td, ActorShared<> parent); + + private: + void tear_down() final; + + Td *td_; + ActorShared<> parent_; +}; + +} // namespace td diff --git a/td/telegram/Global.h b/td/telegram/Global.h index aa297d638..181c6fb91 100644 --- a/td/telegram/Global.h +++ b/td/telegram/Global.h @@ -34,6 +34,7 @@ namespace td { class AnimationsManager; class AttachMenuManager; class AuthManager; +class AutosaveManager; class BackgroundManager; class CallManager; class ConfigManager; @@ -204,6 +205,13 @@ class Global final : public ActorContext { auth_manager_ = auth_manager; } + ActorId autosave_manager() const { + return autosave_manager_; + } + void set_autosave_manager(ActorId autosave_manager) { + autosave_manager_ = autosave_manager; + } + ActorId background_manager() const { return background_manager_; } @@ -475,6 +483,7 @@ class Global final : public ActorContext { ActorId animations_manager_; ActorId attach_menu_manager_; ActorId auth_manager_; + ActorId autosave_manager_; ActorId background_manager_; ActorId call_manager_; ActorId config_manager_; diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index fbcd780bb..ebc7d55ea 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -13,6 +13,7 @@ #include "td/telegram/AudiosManager.h" #include "td/telegram/AuthManager.h" #include "td/telegram/AutoDownloadSettings.h" +#include "td/telegram/AutosaveManager.h" #include "td/telegram/BackgroundId.h" #include "td/telegram/BackgroundManager.h" #include "td/telegram/BackgroundType.h" @@ -3196,6 +3197,8 @@ void Td::dec_actor_refcnt() { LOG(DEBUG) << "AudiosManager was cleared" << timer; auth_manager_.reset(); LOG(DEBUG) << "AuthManager was cleared" << timer; + autosave_manager_.reset(); + LOG(DEBUG) << "AutosaveManager was cleared" << timer; background_manager_.reset(); LOG(DEBUG) << "BackgroundManager was cleared" << timer; callback_queries_manager_.reset(); @@ -3394,6 +3397,8 @@ void Td::clear() { LOG(DEBUG) << "AttachMenuManager actor was cleared" << timer; auth_manager_actor_.reset(); LOG(DEBUG) << "AuthManager actor was cleared" << timer; + autosave_manager_actor_.reset(); + LOG(DEBUG) << "AutosaveManager actor was cleared" << timer; background_manager_actor_.reset(); LOG(DEBUG) << "BackgroundManager actor was cleared" << timer; contacts_manager_actor_.reset(); @@ -3857,6 +3862,9 @@ void Td::init_managers() { attach_menu_manager_ = make_unique(this, create_reference()); attach_menu_manager_actor_ = register_actor("AttachMenuManager", attach_menu_manager_.get()); G()->set_attach_menu_manager(attach_menu_manager_actor_.get()); + autosave_manager_ = make_unique(this, create_reference()); + autosave_manager_actor_ = register_actor("AutosaveManager", autosave_manager_.get()); + G()->set_autosave_manager(autosave_manager_actor_.get()); background_manager_ = make_unique(this, create_reference()); background_manager_actor_ = register_actor("BackgroundManager", background_manager_.get()); G()->set_background_manager(background_manager_actor_.get()); diff --git a/td/telegram/Td.h b/td/telegram/Td.h index f557081e0..2aa647336 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -42,6 +42,7 @@ class AnimationsManager; class AttachMenuManager; class AudiosManager; class AuthManager; +class AutosaveManager; class BackgroundManager; class CallManager; class CallbackQueriesManager; @@ -144,6 +145,8 @@ class Td final : public Actor { ActorOwn attach_menu_manager_actor_; unique_ptr auth_manager_; ActorOwn auth_manager_actor_; + unique_ptr autosave_manager_; + ActorOwn autosave_manager_actor_; unique_ptr background_manager_; ActorOwn background_manager_actor_; unique_ptr contacts_manager_;