From f5a776b67ca06a7561410896ec6d77aba1fa1daf Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 6 Jan 2024 22:06:52 +0300 Subject: [PATCH] Add MessageImportManager. --- CMakeLists.txt | 2 ++ SplitSource.php | 1 + td/telegram/Global.h | 9 +++++++++ td/telegram/MessageImportManager.cpp | 18 ++++++++++++++++++ td/telegram/MessageImportManager.h | 28 ++++++++++++++++++++++++++++ td/telegram/Td.cpp | 10 +++++++++- td/telegram/Td.h | 3 +++ 7 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 td/telegram/MessageImportManager.cpp create mode 100644 td/telegram/MessageImportManager.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f216fbb0..94ae3f287 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -399,6 +399,7 @@ set(TDLIB_SOURCE td/telegram/MessageEntity.cpp td/telegram/MessageExtendedMedia.cpp td/telegram/MessageId.cpp + td/telegram/MessageImportManager.cpp td/telegram/MessageInputReplyTo.cpp td/telegram/MessageOrigin.cpp td/telegram/MessageReaction.cpp @@ -694,6 +695,7 @@ set(TDLIB_SOURCE td/telegram/MessageExtendedMedia.h td/telegram/MessageFullId.h td/telegram/MessageId.h + td/telegram/MessageImportManager.h td/telegram/MessageInputReplyTo.h td/telegram/MessageLinkInfo.h td/telegram/MessageOrigin.h diff --git a/SplitSource.php b/SplitSource.php index a44c8abdc..5aee690aa 100644 --- a/SplitSource.php +++ b/SplitSource.php @@ -305,6 +305,7 @@ function split_file($file, $chunks, $undo) { 'link_manager[_(-][^.]|LinkManager' => 'LinkManager', 'LogeventIdWithGeneration|add_log_event|delete_log_event|get_erase_log_event_promise|parse_time|store_time' => 'logevent/LogEventHelper', 'MessageCopyOptions' => 'MessageCopyOptions', + 'message_import_manager[_(-][^.]|MessageImportManager' => 'MessageImportManager', 'messages_manager[_(-][^.]|MessagesManager' => 'MessagesManager', 'notification_manager[_(-][^.]|NotificationManager|notifications[)]' => 'NotificationManager', 'notification_settings_manager[_(-][^.]|NotificationSettingsManager' => 'NotificationSettingsManager', diff --git a/td/telegram/Global.h b/td/telegram/Global.h index f7ce3c163..b00ee601a 100644 --- a/td/telegram/Global.h +++ b/td/telegram/Global.h @@ -51,6 +51,7 @@ class GameManager; class GroupCallManager; class LanguagePackManager; class LinkManager; +class MessageImportManager; class MessagesManager; class NetQueryDispatcher; class NotificationManager; @@ -315,6 +316,13 @@ class Global final : public ActorContext { link_manager_ = link_manager; } + ActorId message_import_manager() const { + return message_import_manager_; + } + void set_message_import_manager(ActorId message_import_manager) { + message_import_manager_ = message_import_manager; + } + ActorId messages_manager() const { return messages_manager_; } @@ -564,6 +572,7 @@ class Global final : public ActorContext { ActorId group_call_manager_; ActorId language_pack_manager_; ActorId link_manager_; + ActorId message_import_manager_; ActorId messages_manager_; ActorId notification_manager_; ActorId notification_settings_manager_; diff --git a/td/telegram/MessageImportManager.cpp b/td/telegram/MessageImportManager.cpp new file mode 100644 index 000000000..fadb96f93 --- /dev/null +++ b/td/telegram/MessageImportManager.cpp @@ -0,0 +1,18 @@ +// +// 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/MessageImportManager.h" + +namespace td { + +MessageImportManager::MessageImportManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) { +} + +void MessageImportManager::tear_down() { + parent_.reset(); +} + +} // namespace td diff --git a/td/telegram/MessageImportManager.h b/td/telegram/MessageImportManager.h new file mode 100644 index 000000000..bf4adf310 --- /dev/null +++ b/td/telegram/MessageImportManager.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 MessageImportManager final : public Actor { + public: + MessageImportManager(Td *td, ActorShared<> parent); + + private: + void tear_down() final; + + Td *td_; + ActorShared<> parent_; +}; + +} // namespace td diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 9a172f4b4..9a278d65d 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -79,6 +79,7 @@ #include "td/telegram/MessageEntity.h" #include "td/telegram/MessageFullId.h" #include "td/telegram/MessageId.h" +#include "td/telegram/MessageImportManager.h" #include "td/telegram/MessageLinkInfo.h" #include "td/telegram/MessageReaction.h" #include "td/telegram/MessageSearchFilter.h" @@ -3314,6 +3315,8 @@ void Td::dec_actor_refcnt() { LOG(DEBUG) << "InlineQueriesManager was cleared" << timer; link_manager_.reset(); LOG(DEBUG) << "LinkManager was cleared" << timer; + message_import_manager_.reset(); + LOG(DEBUG) << "MessageImportManager was cleared" << timer; messages_manager_.reset(); LOG(DEBUG) << "MessagesManager was cleared" << timer; notification_manager_.reset(); @@ -3529,7 +3532,9 @@ void Td::clear() { LOG(DEBUG) << "InlineQueriesManager actor was cleared" << timer; link_manager_actor_.reset(); LOG(DEBUG) << "LinkManager actor was cleared" << timer; - messages_manager_actor_.reset(); // TODO: Stop silent + message_import_manager_actor_.reset(); + LOG(DEBUG) << "MessageImportManager actor was cleared" << timer; + messages_manager_actor_.reset(); LOG(DEBUG) << "MessagesManager actor was cleared" << timer; notification_manager_actor_.reset(); LOG(DEBUG) << "NotificationManager actor was cleared" << timer; @@ -4030,6 +4035,9 @@ void Td::init_managers() { link_manager_ = make_unique(this, create_reference()); link_manager_actor_ = register_actor("LinkManager", link_manager_.get()); G()->set_link_manager(link_manager_actor_.get()); + message_import_manager_ = make_unique(this, create_reference()); + message_import_manager_actor_ = register_actor("MessageImportManager", message_import_manager_.get()); + G()->set_message_import_manager(message_import_manager_actor_.get()); messages_manager_ = make_unique(this, create_reference()); messages_manager_actor_ = register_actor("MessagesManager", messages_manager_.get()); G()->set_messages_manager(messages_manager_actor_.get()); diff --git a/td/telegram/Td.h b/td/telegram/Td.h index 97780cd85..1ea37c4a6 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -67,6 +67,7 @@ class InlineQueriesManager; class HashtagHints; class LanguagePackManager; class LinkManager; +class MessageImportManager; class MessagesManager; class NetStatsManager; class NotificationManager; @@ -199,6 +200,8 @@ class Td final : public Actor { ActorOwn inline_queries_manager_actor_; unique_ptr link_manager_; ActorOwn link_manager_actor_; + unique_ptr message_import_manager_; + ActorOwn message_import_manager_actor_; unique_ptr messages_manager_; ActorOwn messages_manager_actor_; unique_ptr notification_manager_;