Make VideoNotesManager an actor.
This commit is contained in:
parent
46562f56d0
commit
49c993b674
|
@ -3451,6 +3451,8 @@ void Td::clear() {
|
|||
LOG(DEBUG) << "TopDialogManager actor was cleared" << timer;
|
||||
updates_manager_actor_.reset();
|
||||
LOG(DEBUG) << "UpdatesManager actor was cleared" << timer;
|
||||
video_notes_manager_actor_.reset();
|
||||
LOG(DEBUG) << "VideoNotesManager actor was cleared" << timer;
|
||||
voice_notes_manager_actor_.reset();
|
||||
LOG(DEBUG) << "VoiceNotesManager actor was cleared" << timer;
|
||||
web_pages_manager_actor_.reset();
|
||||
|
@ -3855,7 +3857,6 @@ void Td::init_managers() {
|
|||
audios_manager_ = make_unique<AudiosManager>(this);
|
||||
callback_queries_manager_ = make_unique<CallbackQueriesManager>(this);
|
||||
documents_manager_ = make_unique<DocumentsManager>(this);
|
||||
video_notes_manager_ = make_unique<VideoNotesManager>(this);
|
||||
videos_manager_ = make_unique<VideosManager>(this);
|
||||
|
||||
animations_manager_ = make_unique<AnimationsManager>(this, create_reference());
|
||||
|
@ -3913,6 +3914,8 @@ void Td::init_managers() {
|
|||
updates_manager_ = make_unique<UpdatesManager>(this, create_reference());
|
||||
updates_manager_actor_ = register_actor("UpdatesManager", updates_manager_.get());
|
||||
G()->set_updates_manager(updates_manager_actor_.get());
|
||||
video_notes_manager_ = make_unique<VideoNotesManager>(this, create_reference());
|
||||
video_notes_manager_actor_ = register_actor("VideoNotesManager", video_notes_manager_.get());
|
||||
voice_notes_manager_ = make_unique<VoiceNotesManager>(this, create_reference());
|
||||
voice_notes_manager_actor_ = register_actor("VoiceNotesManager", voice_notes_manager_.get());
|
||||
web_pages_manager_ = make_unique<WebPagesManager>(this, create_reference());
|
||||
|
|
|
@ -134,7 +134,6 @@ class Td final : public Actor {
|
|||
unique_ptr<CallbackQueriesManager> callback_queries_manager_;
|
||||
unique_ptr<DocumentsManager> documents_manager_;
|
||||
unique_ptr<OptionManager> option_manager_;
|
||||
unique_ptr<VideoNotesManager> video_notes_manager_;
|
||||
unique_ptr<VideosManager> videos_manager_;
|
||||
|
||||
unique_ptr<AnimationsManager> animations_manager_;
|
||||
|
@ -181,6 +180,8 @@ class Td final : public Actor {
|
|||
ActorOwn<TopDialogManager> top_dialog_manager_actor_;
|
||||
unique_ptr<UpdatesManager> updates_manager_;
|
||||
ActorOwn<UpdatesManager> updates_manager_actor_;
|
||||
unique_ptr<VideoNotesManager> video_notes_manager_;
|
||||
ActorOwn<VideoNotesManager> video_notes_manager_actor_;
|
||||
unique_ptr<VoiceNotesManager> voice_notes_manager_;
|
||||
ActorOwn<VoiceNotesManager> voice_notes_manager_actor_;
|
||||
unique_ptr<WebPagesManager> web_pages_manager_;
|
||||
|
|
|
@ -23,13 +23,17 @@
|
|||
|
||||
namespace td {
|
||||
|
||||
VideoNotesManager::VideoNotesManager(Td *td) : td_(td) {
|
||||
VideoNotesManager::VideoNotesManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) {
|
||||
}
|
||||
|
||||
VideoNotesManager::~VideoNotesManager() {
|
||||
Scheduler::instance()->destroy_on_scheduler(G()->get_gc_scheduler_id(), video_notes_);
|
||||
}
|
||||
|
||||
void VideoNotesManager::tear_down() {
|
||||
parent_.reset();
|
||||
}
|
||||
|
||||
int32 VideoNotesManager::get_video_note_duration(FileId file_id) const {
|
||||
auto video_note = get_video_note(file_id);
|
||||
CHECK(video_note != nullptr);
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#include "td/telegram/td_api.h"
|
||||
#include "td/telegram/telegram_api.h"
|
||||
|
||||
#include "td/actor/actor.h"
|
||||
|
||||
#include "td/utils/buffer.h"
|
||||
#include "td/utils/common.h"
|
||||
#include "td/utils/FlatHashMap.h"
|
||||
|
@ -24,14 +26,14 @@ namespace td {
|
|||
|
||||
class Td;
|
||||
|
||||
class VideoNotesManager {
|
||||
class VideoNotesManager final : public Actor {
|
||||
public:
|
||||
explicit VideoNotesManager(Td *td);
|
||||
VideoNotesManager(Td *td, ActorShared<> parent);
|
||||
VideoNotesManager(const VideoNotesManager &) = delete;
|
||||
VideoNotesManager &operator=(const VideoNotesManager &) = delete;
|
||||
VideoNotesManager(VideoNotesManager &&) = delete;
|
||||
VideoNotesManager &operator=(VideoNotesManager &&) = delete;
|
||||
~VideoNotesManager();
|
||||
~VideoNotesManager() final;
|
||||
|
||||
int32 get_video_note_duration(FileId file_id) const;
|
||||
|
||||
|
@ -81,7 +83,11 @@ class VideoNotesManager {
|
|||
|
||||
FileId on_get_video_note(unique_ptr<VideoNote> new_video_note, bool replace);
|
||||
|
||||
void tear_down() final;
|
||||
|
||||
Td *td_;
|
||||
ActorShared<> parent_;
|
||||
|
||||
WaitFreeHashMap<FileId, unique_ptr<VideoNote>, FileIdHash> video_notes_;
|
||||
|
||||
FlatHashMap<FileId, FlatHashSet<FullMessageId, FullMessageIdHash>, FileIdHash> video_note_messages_;
|
||||
|
|
Loading…
Reference in New Issue
Block a user